Created
October 21, 2015 21:59
-
-
Save Ziaunys/554b879baeaf6071d275 to your computer and use it in GitHub Desktop.
puppet parser validate 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