Adds pre-commit hook, hook config script, and a README

The pre-commit hook will automatically gofmt code in place, warning you
about any changes. It will also fail to commit if either golint or go
vet fails.
This commit is contained in:
Brian Bland 2014-12-15 15:45:02 -08:00
parent a35273a0db
commit 1a6893dbb6
3 changed files with 53 additions and 0 deletions

29
project/hooks/pre-commit Executable file
View file

@ -0,0 +1,29 @@
#!/bin/sh
REPO_ROOT=$(git rev-parse --show-toplevel)
RESOLVE_REPO_ROOT_STATUS=$?
if [ "$RESOLVE_REPO_ROOT_STATUS" -ne "0" ]; then
printf "Unable to resolve repository root. Error:\n%s\n" "$RESOLVE_REPO_ROOT_STATUS" > /dev/stderr
exit $RESOLVE_REPO_ROOT_STATUS
fi
cd $REPO_ROOT
GOFMT_ERRORS=$(gofmt -s -l . 2>&1)
if [ -n "$GOFMT_ERRORS" ]; then
printf 'gofmt failed for the following files:\n%s\n\nPlease run "gofmt -s -l ." in the root of your repository before committing\n' "$GOFMT_ERRORS" > /dev/stderr
exit 1
fi
GOLINT_ERRORS=$(golint ./... 2>&1)
if [ -n "$GOLINT_ERRORS" ]; then
printf "golint failed with the following errors:\n%s\n" "$GOLINT_ERRORS" > /dev/stderr
exit 1
fi
GOVET_ERRORS=$(go vet ./... 2>&1)
GOVET_STATUS=$?
if [ "$GOVET_STATUS" -ne "0" ]; then
printf "govet failed with the following errors:\n%s\n" "$GOVET_ERRORS" > /dev/stderr
exit $GOVET_STATUS
fi