#!/bin/bash

set -o errexit
set -o nounset
set -o pipefail

find_files() {
  find . -not \( \
      \( \
        -wholename '*/vendor/*' \
      \) -prune \
    \) -name '*.go' \
    -not \( -wholename './_output/*' \)
}
FIX=0
GOFMT="gofmt -s"
bad_files=$(find_files | xargs $GOFMT -l)

while getopts "f?:" opt; do
    case "$opt" in
        f) FIX=1
            ;;
    esac
done

if [[ -n "${bad_files}" ]]; then
    if (($FIX == 1)) ; then
        echo "Correcting the following files:"
        echo "${bad_files}"
        while read -r go_file; do
            gofmt -s -w $go_file
        done <<< "${bad_files}"
    else
      echo "!!! '$GOFMT' needs to be run on the following files: "
      echo "${bad_files}"
      exit 1
  fi
fi