Parcourir la source

Contrib post-commit hook for checking gofmt

Solomon Hykes il y a 12 ans
Parent
commit
2de953490d
2 fichiers modifiés avec 47 ajouts et 0 suppressions
  1. 1 0
      hack/README.md
  2. 46 0
      hack/fmt-check.hook

+ 1 - 0
hack/README.md

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

+ 46 - 0
hack/fmt-check.hook

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