diff --git a/.travis.yml b/.travis.yml index d9f2cae18f..9e921039aa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,4 +3,5 @@ go: - 1.3 script: - script/validate-dco +- script/validate-gofmt - script/test diff --git a/script/validate-gofmt b/script/validate-gofmt new file mode 100755 index 0000000000..41688b0c01 --- /dev/null +++ b/script/validate-gofmt @@ -0,0 +1,28 @@ +source "$(dirname "$BASH_SOURCE")/.validate" + +IFS=$'\n' +files=( $(validate_diff --diff-filter=ACMR --name-only -- '*.go' | grep -v '^Godeps/' || true) ) +unset IFS + +badFiles=() +for f in "${files[@]}"; do + # we use "git show" here to validate that what's committed is formatted + if [ "$(git show "$VALIDATE_HEAD:$f" | gofmt -s -l)" ]; then + badFiles+=( "$f" ) + fi +done + +if [ ${#badFiles[@]} -eq 0 ]; then + echo 'Congratulations! All Go source files are properly formatted.' +else + { + echo "These files are not properly gofmt'd:" + for f in "${badFiles[@]}"; do + echo " - $f" + done + echo + echo 'Please reformat the above files using "gofmt -s -w" and commit the result.' + echo + } >&2 + false +fi