diff --git a/.git_hooks/pre-commit/gofmt b/.git_hooks/pre-commit/gofmt index b494526..49bfde0 100755 --- a/.git_hooks/pre-commit/gofmt +++ b/.git_hooks/pre-commit/gofmt @@ -6,17 +6,30 @@ test_fmt() { ' for file in $(git diff --cached --name-only --diff-filter=ACM | grep '\.go$') do - if test "$(git cat-file -p :$file | gofmt -l)" = "" + output=$(git cat-file -p :$file | gofmt -l 2>&1) + if test $? -ne 0 + then + output=$(echo "$output" | sed "s,,$file,") + syntaxerrors="${list}${output}\n" + elif test -n "$output" then list="${list}${file}\n" fi done + exitcode=0 + if test -n "$syntaxerrors" + then + echo >&2 "gofmt found syntax errors:" + printf "$syntaxerrors" + exitcode=1 + fi if test -n "$list" then echo >&2 "gofmt needs to format these files (run gofmt -w):" printf "$list" - exit 1 + exitcode=1 fi + exit $exitcode } case "$1" in