summaryrefslogtreecommitdiff
path: root/pre-commit.hook
blob: 139793328875e2fd401164af797167836e2becd2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/bash
#
# Check that the code follows a consistant code style
#

# Check for existence of astyle, and error out if not present.
if ! builtin type -P astyle; then
      echo "PyGI git pre-commit hook:"
      echo "Did not find astyle, please install it before continuing."
      exit 1
fi

ASTYLE_PARAMETERS="-p -d -c -S -U -M60"

echo "--Checking style--"
for file in `git-diff-index --cached --name-only HEAD --diff-filter=ACMR| grep "\.c$"` ; do
    # nf is the temporary checkout. This makes sure we check against the
    # revision in the index (and not the checked out version).
    nf=`git checkout-index --temp ${file} | cut -f 1`
    newfile=`mktemp /tmp/${nf}.XXXXXX` || exit 1
    astyle ${ASTYLE_PARAMETERS} < $nf > $newfile 2>> /dev/null
    diff -u -p "${nf}" "${newfile}"
    r=$?
    rm "${newfile}"
    rm "${nf}"
    if [ $r != 0 ] ; then
echo "================================================================================================="
echo " Code style error in: $file                                                                      "
echo "                                                                                                 "
echo " Please fix before committing. Don't forget to run git add before trying to commit again.        "
echo " If the whole file is to be committed, this should work (run from the top-level directory):      "
echo "                                                                                                 "
echo "   astyle ${ASTYLE_PARAMETERS} $file; git add $file; git commit"
echo "                                                                                                 "
echo "================================================================================================="
        exit 1
    fi
done
echo "--Checking style pass--"