]> gitweb.fluxo.info Git - rhatto/dotfiles/git.git/commitdiff
Adding git-hooks configuration
authorSilvio Rhatto <rhatto@riseup.net>
Sun, 6 Apr 2014 00:00:09 +0000 (21:00 -0300)
committerSilvio Rhatto <rhatto@riseup.net>
Sun, 6 Apr 2014 00:00:09 +0000 (21:00 -0300)
git_hooks.dot.link/pre-commit/puppet [new file with mode: 0755]
gitconfig.dot.link

diff --git a/git_hooks.dot.link/pre-commit/puppet b/git_hooks.dot.link/pre-commit/puppet
new file mode 100755 (executable)
index 0000000..986ca4a
--- /dev/null
@@ -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
index 38f5e96935b1e7534fba30f2cf373e200aa5e98f..2c332de82b54416d876840ed5b145dfc2b2ce7cc 100644 (file)
@@ -8,4 +8,7 @@
   path = .custom/gitconfig
 
 [push]
-       default = matching
+  default = matching
+
+[hooks]
+  global = ~/apps/scripts/misc/git-hooks/contrib/ ~/.git_hooks