diff --git a/pre-commit b/pre-commit new file mode 100644 index 0000000000000000000000000000000000000000..82587fce34c8bd8df74b1a87e0ce6bb19ce18679 --- /dev/null +++ b/pre-commit @@ -0,0 +1,31 @@ + +#!/bin/bash +# Installation: +# cp pre-commit .git/hooks +# chmod +x .git/hooks/pre-commit + +OPTIONS="--convert-tabs --indent=spaces=2 --indent-switches --indent-col1-comments --break-blocks --delete-empty-lines --align-pointer=name --keep-one-line-blocks --keep-one-line-statements --lineend=linux" + +RETURN=0 +ASTYLE=$(which astyle) +if [ $? -ne 0 ]; then + echo "[!] astyle not installed. Unable to check source file format policy." >&2 + exit 1 +fi + +FILES=`git diff --cached --name-only --diff-filter=ACMR | grep -E "\.(c|cpp|h)$"` +for FILE in $FILES; do + $ASTYLE $OPTIONS < $FILE | cmp -s $FILE - + if [ $? -ne 0 ]; then + echo "[!] $FILE does not respect the agreed coding style." >&2 + RETURN=1 + fi +done + +if [ $RETURN -eq 1 ]; then + echo "" >&2 + echo "Make sure you have run astyle with the following options:" >&2 + echo $OPTIONS >&2 +fi + +exit $RETURN \ No newline at end of file