Skip to content

Instantly share code, notes, and snippets.

@kyamaguchi
Last active December 10, 2015 01:48
Show Gist options
  • Save kyamaguchi/4362089 to your computer and use it in GitHub Desktop.
Save kyamaguchi/4362089 to your computer and use it in GitHub Desktop.
Check specific keywords on commit.
#!/usr/bin/env ruby
class String
# colorization
# from http://stackoverflow.com/questions/1489183/colorized-ruby-output
def colorize(color_code)
"\e[#{color_code}m#{self}\e[0m"
end
def red ; colorize(31) ; end
def green ; colorize(32) ; end
def yellow ; colorize(33) ; end
def pink ; colorize(35) ; end
end
checks = %w{
debugger
logger
puts
binding.pry
save_and_open_page
console.log
}
errors = []
files_changed = `git diff --cached --name-only HEAD`
files_changed.each_line do |filename|
filename.chomp!
changes = `git diff --cached -U0 HEAD -- "#{filename}"`
checks.each do |check|
result = changes.split(/\n/).grep(/^\+.*\b#{check}\b/)
unless result.empty?
errors << {:name => check, :file => filename, :matches => result}
end
end
end
unless errors.empty?
errors.each do |error|
puts "'#{error[:name]}' found in file: #{error[:file]}".yellow
error[:matches].each {|m| puts " -> #{m}" }
end
puts "COMMIT REJECTED. Please remove them before commiting OR use --no-verify".red
exit 1
end
@kyamaguchi
Copy link
Author

Add quots to avoid errors with the files which include whitespace in filename.

The errors before fixing are
$ git commit ...
sh: -c: line 0: syntax error near unexpected token (' sh: -c: line 0:git diff --cached -U0 HEAD -- Default (OSX).sublime-keymap'

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