Skip to content

Instantly share code, notes, and snippets.

@todb-r7
Forked from anonymous/pre-commit
Last active December 10, 2015 10:39
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save todb-r7/4422771 to your computer and use it in GitHub Desktop.
Save todb-r7/4422771 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
# Check that modules actually pass msftidy checks first.
# To install this script, copy it to ".git/hooks/pre-commit" and
# make it executable
valid = true # Presume validity
files_to_check = []
results = %x[git diff --cached --name-only]
results.each_line do |fname|
fname.strip!
next unless File.exist?(fname) and File.file?(fname)
next unless fname =~ /modules.+\.rb/
files_to_check << fname
end
if files_to_check.empty?
puts "--- No Metasploit modules to check, committing. ---"
else
puts "--- Checking module syntax with tools/msftidy.rb ---"
files_to_check.each do |fname|
cmd = "ruby ./tools/msftidy.rb #{fname}"
msftidy_output= %x[ #{cmd} ]
puts "#{fname} - msftidy check passed" if msftidy_output.empty?
msftidy_output.each_line do |line|
valid = false
puts line
end
end
puts "-" * 52
end
unless valid
puts "msftidy.rb objected, aborting commit"
puts "To bypass this check use: git commit --no-verify"
puts "-" * 52
exit(1)
end
@todb-r7
Copy link
Author

todb-r7 commented Dec 31, 2012

Originally by @h0ng10

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment