aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Scherer <misc@mageia.org>2010-11-19 00:46:13 +0000
committerMichael Scherer <misc@mageia.org>2010-11-19 00:46:13 +0000
commit50830d1e9be5e6a6cefcbe48e63dd7c8dd9defce (patch)
tree90c6007b08847206ef71b0cfb65f38d361c7d8c5
parent090867e1a559885b11c914c977cfd2843c5ee746 (diff)
downloadpuppet-50830d1e9be5e6a6cefcbe48e63dd7c8dd9defce.tar
puppet-50830d1e9be5e6a6cefcbe48e63dd7c8dd9defce.tar.gz
puppet-50830d1e9be5e6a6cefcbe48e63dd7c8dd9defce.tar.bz2
puppet-50830d1e9be5e6a6cefcbe48e63dd7c8dd9defce.tar.xz
puppet-50830d1e9be5e6a6cefcbe48e63dd7c8dd9defce.zip
- add a type to handle syntax check script
-rw-r--r--modules/subversion/manifests/init.pp22
-rw-r--r--modules/subversion/templates/syntax_check.sh21
2 files changed, 36 insertions, 7 deletions
diff --git a/modules/subversion/manifests/init.pp b/modules/subversion/manifests/init.pp
index 77887a3d..682f984b 100644
--- a/modules/subversion/manifests/init.pp
+++ b/modules/subversion/manifests/init.pp
@@ -18,15 +18,23 @@ class subversion {
file { $local_dir:
ensure => directory,
}
- # mettre tout les scripts dans le repertoire
- }
+ define syntax_check($regexp_ext,$check_cmd) {
+ file { "$local_dir/pre-commit.d/$name":
+ ensure => present,
+ owner => root,
+ group => root,
+ mode => 755,
+ content => template('subversion/syntax_check.sh')
+ }
+ }
- # TODO create proper hook directory ( see zarb.org )
- # create documentation
- # - group who can commit
- # - array for who get mail on what ( hash )
- # - array of where the directory is updated
+ # mettre tout les scripts dans le repertoire
+ syntax_check{"check_perl":
+ regexp_ext => ".p[lm]$",
+ check_cmd => "perl -c"
+ }
+ }
# later, deploy a backup file ( ie, cron job to do a dump in some directory )
# TODO
diff --git a/modules/subversion/templates/syntax_check.sh b/modules/subversion/templates/syntax_check.sh
new file mode 100644
index 00000000..2fe1671c
--- /dev/null
+++ b/modules/subversion/templates/syntax_check.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+REPOS="$1"
+TXN="$2"
+
+changed=`svnlook changed -t "$TXN" "$REPOS"`
+files=`echo $changed | awk '{print $2}'`
+if echo $files | grep <%= regexp_ext %>
+then
+ svnlook cat -t "$TXN" "$REPOS" "$files" | <%= check_cmd %>
+ if [ $? -ne 0 ]
+ then
+ echo "Syntax error in $files." 1>&2
+ echo "Check it with <%= check_cmd %>"
+ exit 1
+ fi
+fi
+
+# All checks passed, so allow the commit.
+exit 0
+