Contrib post-commit hook for checking gofmt

Upstream-commit: 2de953490d6a4ccba9668484fce1f028578c6f77
Component: engine
This commit is contained in:
Solomon Hykes
2013-04-11 11:30:35 -07:00
parent 2bb40279d3
commit d6545d6e21
2 changed files with 47 additions and 0 deletions

View File

@ -0,0 +1 @@
This directory contains material helpful for hacking on docker.

View File

@ -0,0 +1,46 @@
#!/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