|
@@ -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
|