#!/usr/bin/env ruby
spec_hits = []
 
checks = {
            '_spec\.rb$' => ['focus:\s*true'],
            '\.rb$' => ['binding\.pry', 'debugger']
         }
 
# Find the names of all the filenames that have been (A)dded (C)opied or (M)odified
filenames = `git diff --cached --name-only --diff-filter=ACM`.split("\n")
 
filenames.each do |filename|
  # Perform special checks for _spec filenames (rspec tests)
  checks.each do |filename_pattern, patterns|
    if filename.match filename_pattern
      patterns.each do |contents_pattern|
        results = `git diff --cached  #{filename} | grep "^\+[^+]" | grep "#{contents_pattern}"`.split("\n").map { |r| r.sub(/^\+[\s\t]*/, '') }
        if $? == 0
          # Add the relevant change with line number to the spec_hits array
          results.each{ |r|
            spec_hits.push "#{filename}:" + `grep -n '#{r}' #{filename}`.sub(/:\s+/, ' ').chomp
          }
        end
      end
    end
  end
end
 
if spec_hits.any?
  puts "\e[33m>>> Remove the following problems from these files before committing\e[0m"
  puts spec_hits.join("\n")
end
 
exit 1 if spec_hits.any?