]> git.openstreetmap.org Git - chef.git/blobdiff - hooks/pre-commit
Add more location and hosting information
[chef.git] / hooks / pre-commit
index 6f7912f1f726a46b28449e8cf007d58c650f23cd..55d23300cee8c20ff844da2a421821cd7bd7da7b 100755 (executable)
@@ -7,7 +7,9 @@ if IO.popen(["git", "ls-files", "--unmerged"]).read.empty?
 
   system("git", "stash", "save", "--keep-index", "--quiet") if need_stash
 
 
   system("git", "stash", "save", "--keep-index", "--quiet") if need_stash
 
-  files = IO.popen(["git", "diff", "--staged", "--name-only"]).readlines.map(&:chomp)
+  files = IO.popen(["git", "diff", "--staged", "--name-status"]).map do |line|
+    Regexp.last_match(1) if line =~ /^[AM]\s+(.*)$/
+  end.compact
 
   ruby_files = files.select do |file|
     file =~ /\.rb$/ || `file --brief --mime-type #{file}` == "text/x-ruby\n"
 
   ruby_files = files.select do |file|
     file =~ /\.rb$/ || `file --brief --mime-type #{file}` == "text/x-ruby\n"
@@ -15,6 +17,10 @@ if IO.popen(["git", "ls-files", "--unmerged"]).read.empty?
 
   ok &&= system("rubocop", *ruby_files) unless ruby_files.empty?
 
 
   ok &&= system("rubocop", *ruby_files) unless ruby_files.empty?
 
+  cookbooks = files.grep(%r{(cookbooks/[^/]+)/}) { Regexp.last_match(1) }.uniq
+
+  ok &&= system("foodcritic", "-f", "any", *cookbooks) unless cookbooks.empty?
+
   system("git", "stash", "pop", "--quiet") if need_stash
 else
   puts "Unmerged files. Resolve before committing."
   system("git", "stash", "pop", "--quiet") if need_stash
 else
   puts "Unmerged files. Resolve before committing."