47 lines
1.1 KiB
Plaintext
47 lines
1.1 KiB
Plaintext
![]() |
#!/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
|