Created
January 20, 2016 00:10
-
-
Save Ziaunys/f2b604d42eb85d6814ec to your computer and use it in GitHub Desktop.
Puppet parser validation pre-commit hook
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
syntax_errors=0 | |
error_msg=$(mktemp /tmp/error_msg.XXXXXX) | |
if git rev-parse --quiet --verify HEAD > /dev/null | |
then | |
against=HEAD | |
else | |
# Initial commit: diff against an empty tree object | |
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904 | |
fi | |
# Get list of new/modified manifest and template files to check (in git index) | |
for indexfile in `git diff-index --diff-filter=AM --name-only --cached $against | egrep '\.(pp|erb)'` | |
do | |
# Don't check empty files | |
if [ `git cat-file -s :0:$indexfile` -gt 0 ] | |
then | |
case $indexfile in | |
*.pp ) | |
# Check puppet manifest syntax | |
#git cat-file blob :0:$indexfile | puppet --color=false --parseonly --ignoreimport > $error_msg ;; | |
# Updated for 2.7.x | |
puppet parser validate $indexfile > $error_msg ;; | |
*.erb ) | |
# Check ERB template syntax | |
# -P : ignore lines which start with "%" | |
git cat-file blob :0:$indexfile | erb -P -x -T - | ruby -c 2> $error_msg > /dev/null ;; | |
esac | |
if [ "$?" -ne 0 ] | |
then | |
echo -n "$indexfile: " | |
cat $error_msg | |
syntax_errors=`expr $syntax_errors + 1` | |
fi | |
fi | |
done | |
rm -f $error_msg | |
if [ "$syntax_errors" -ne 0 ] | |
then | |
echo "Error: $syntax_errors syntax errors found, aborting commit." | |
exit 1 | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment