diff options
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/githook/pre-commit | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tools/githook/pre-commit b/tools/githook/pre-commit new file mode 100755 index 0000000..c7dec86 --- /dev/null +++ b/tools/githook/pre-commit @@ -0,0 +1,37 @@ +#!/bin/sh + +if git rev-parse --verify HEAD >/dev/null 2>&1 +then + against=HEAD +else + # Initial commit: diff against an empty tree object + against=4b825dc642cb6eb9a060e54bf8d69288fbee4904 +fi + +FILES=$(git diff-index --name-only --diff-filter=ACMR --cached $against -- |egrep ".py$") +if [ "$FILES" != "" ]; then + # We want to look at the staged version only, so we have to run it once for + # each file. + E=0 + for F in ${FILES}; do + P=$(git show ":$F" | python -c "import sys; compile(sys.stdin.read(), '/dev/null', 'exec')") + if [ "$?" != "0" ]; then + echo $P + E=1 + continue + fi + + R=$(git show ":$F" | pep8 -) + if [ "$?" != "0" ]; then + echo "Errors in $F" + echo "$R" + E=1 + fi + done + if [ "$E" != "0" ]; then + exit 1 + fi + + echo Basic python checks passed. +fi + |