Here is what I have: Essentially I use the command line tools instead of ruby functions.
This tells me exactly where the problem is down to the line number. +1 for checking the erb files, I'll have to add that to my script. I have the json check for my hieradata since I keep hiera in JSON format. https://gist.github.com/logicminds/5700014 On Monday, December 10, 2012 2:27:26 PM UTC-8, Jakov Sosic wrote: > > Hi. > > I was wondering what kind of precommit hooks are you guys using? > > Here's what I've come up to in last hour: > > $ cat .hg/hgrc | grep -A 1 hooks > [hooks] > pretxncommit.puppet = .hg/check_puppet.rb > > $ cat .hg/check_puppet.rb > > #!/usr/bin/ruby > def puppet_parser_validate(file) > if !system('puppet parser validate ' + file + ' > /dev/null 2>&1') > print('Syntax error in file: ' + file + "\n") > system('puppet parser validate ' + file) > exit(1) > end > end > > def puppet_lint(file) > if !system('puppet-lint --no-80chars-check ' + file + ' > /dev/null > 2>&1') > print('Coding style error in file: ' + file + "\n") > system('puppet-lint --no-80chars-check ' + file) > exit(1) > end > end > > def puppet_erb_check(file) > if !system('erb -x -T \'-\' ' + file + ' | ruby -c > /dev/null 2>&1') > print('Syntax error in erb template: ' + file + "\n") > system('erb -x -T \'-\' ' + file + ' | ruby -c') > exit(1) > end > end > > # go through list of files, and call adequate checks > IO.popen('hg status').readlines.each { |file| > file.sub!(/^\w (.*)\n/,'\1') > if file.match('.pp$') > puppet_parser_validate file > puppet_lint file > elsif file.match('.erb$') > puppet_erb_check file > end > } > > > > > These are very basic checks, but I would like to implement also > something like checking if file from 'source =>' is present in module's > files/ or if template from manifest is present in templates/ and things > like that. > > Do you have any other ideas? > > > > > -- > Jakov Sosic > www.srce.unizg.hr > -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to puppet-users+unsubscr...@googlegroups.com. To post to this group, send email to puppet-users@googlegroups.com. Visit this group at http://groups.google.com/group/puppet-users?hl=en. For more options, visit https://groups.google.com/groups/opt_out.