12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #!/bin/sh
- # This pre-commit hook will abort if a committed file doesn't pass gofmt.
- # By Even Shaw <edsrzf@gmail.com>
- # http://github.com/edsrzf/gofmt-git-hook
- test_fmt() {
- hash gofmt 2>&- || { echo >&2 "gofmt not in PATH."; exit 1; }
- IFS='
- '
- for file in `git diff --cached --name-only --diff-filter=ACM | grep '\.go$'`
- do
- output=`git cat-file -p :$file | gofmt -l 2>&1`
- if test $? -ne 0
- then
- output=`echo "$output" | sed "s,<standard input>,$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 and git add):"
- printf "$list"
- exitcode=1
- fi
- exit $exitcode
- }
- case "$1" in
- --about )
- echo "Check Go code formatting"
- ;;
- * )
- test_fmt
- ;;
- esac
|