#!/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--"