Created
May 10, 2012 16:41
-
-
Save limed/2654381 to your computer and use it in GitHub Desktop.
Git client pre-commit hook for verifying puppet errors
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 |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This was taken from the puppetlabs wiki