From 2764f10a64435e88c5ed2dda22eea33ad1a3f93f Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sat, 5 Apr 2014 21:00:09 -0300 Subject: Adding git-hooks configuration --- git_hooks.dot.link/pre-commit/puppet | 50 ++++++++++++++++++++++++++++++++++++ gitconfig.dot.link | 5 +++- 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100755 git_hooks.dot.link/pre-commit/puppet diff --git a/git_hooks.dot.link/pre-commit/puppet b/git_hooks.dot.link/pre-commit/puppet new file mode 100755 index 0000000..986ca4a --- /dev/null +++ b/git_hooks.dot.link/pre-commit/puppet @@ -0,0 +1,50 @@ +#!/bin/sh +# Git Pre-Commit Hook from http://projects.puppetlabs.com/projects/1/wiki/puppet_version_control +# +# Alternatives: https://gist.github.com/jumanjiman/3275053 +# http://www.snijders-it.nl/2011/12/example-puppet-27-git-pre-commit-script.html + +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 diff --git a/gitconfig.dot.link b/gitconfig.dot.link index 38f5e96..2c332de 100644 --- a/gitconfig.dot.link +++ b/gitconfig.dot.link @@ -8,4 +8,7 @@ path = .custom/gitconfig [push] - default = matching + default = matching + +[hooks] + global = ~/apps/scripts/misc/git-hooks/contrib/ ~/.git_hooks -- cgit v1.2.3