Contrib post-commit hook for checking gofmt
Upstream-commit: 2de953490d6a4ccba9668484fce1f028578c6f77 Component: engine
This commit is contained in:
1
components/engine/hack/README.md
Normal file
1
components/engine/hack/README.md
Normal file
@ -0,0 +1 @@
|
||||
This directory contains material helpful for hacking on docker.
|
||||
46
components/engine/hack/fmt-check.hook
Normal file
46
components/engine/hack/fmt-check.hook
Normal 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
|
||||
Reference in New Issue
Block a user