Skip to content

Instantly share code, notes, and snippets.

@sciamp
Forked from mileszs/pre-commit
Last active April 26, 2017 06:51
Show Gist options
  • Select an option

  • Save sciamp/2a03fc7adff3ad62326a to your computer and use it in GitHub Desktop.

Select an option

Save sciamp/2a03fc7adff3ad62326a to your computer and use it in GitHub Desktop.

Revisions

  1. sciamp revised this gist Feb 18, 2016. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion pre-commit
    Original file line number Diff line number Diff line change
    @@ -3,7 +3,7 @@ hits = []

    checks = {
    #'_spec\.rb$' => ['focus:[:space:]*true'],
    '\.rb$' => ['binding\.pry', 'debugger']
    '\.(rb|erb)$' => ['binding\.pry', 'debugger']
    }

    # Find the names of all the filenames that have been (A)dded (C)opied or (M)odified
  2. @mileszs mileszs created this gist Jun 25, 2013.
    34 changes: 34 additions & 0 deletions pre-commit
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,34 @@
    #!/usr/bin/env ruby
    hits = []

    checks = {
    #'_spec\.rb$' => ['focus:[:space:]*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 hits array
    results.each{ |r|
    hits.push "#{filename}:" + `grep -n '#{r}' #{filename}`.sub(/:\s+/, ' ').chomp
    }
    end
    end
    end
    end
    end

    if hits.any?
    puts "\e[33m>>> Please remove the following problems from these files before committing\e[0m"
    puts hits.join("\n")
    end

    exit 1 if hits.any?