overcommit 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -18,7 +18,7 @@
18
18
  # limitations under the License.
19
19
  #
20
20
 
21
- CHANGE_ID_AFTER="Bug|Issue"
21
+ CHANGE_ID_AFTER="Bug|Issue|Story"
22
22
  MSG="$1"
23
23
 
24
24
  # Check for, and add if missing, a unique Change-Id
@@ -5,5 +5,6 @@ require 'overcommit/hook_specific_check'
5
5
  require 'overcommit/installer'
6
6
  require 'overcommit/logger'
7
7
  require 'overcommit/reporter'
8
+ require 'overcommit/staged_file'
8
9
  require 'overcommit/utils'
9
10
  require 'overcommit/version'
@@ -8,9 +8,10 @@ module Overcommit::GitHook
8
8
  def run_check
9
9
  return :warn, "Rhino is not installed" unless in_path? 'rhino'
10
10
 
11
- paths = staged.join(' ')
12
- output = `rhino #{CSS_LINTER_PATH} --quiet --format=compact #{paths} | grep 'Error - '`
11
+ paths = staged.map { |s| s.path }.join(' ')
13
12
 
13
+ output = `rhino #{CSS_LINTER_PATH} --quiet --format=compact #{paths} | grep 'Error - '`
14
+ staged.each { |s| output = s.filter_string(output) }
14
15
  return (output !~ /Error - (?!Unknown @ rule)/ ? :good : :bad), output
15
16
  end
16
17
  end
@@ -14,7 +14,8 @@ module Overcommit::GitHook
14
14
  end
15
15
 
16
16
  def run_check
17
- output = `bundle exec #{ERB_CHECKER} #{staged.join(' ')}`
17
+ output = `bundle exec #{ERB_CHECKER} #{staged.map{ |file| file.path }.join(' ')}`
18
+ staged.each { |s| output = s.filter_string(output) }
18
19
  return (output !~ /: compile error$/ ? :good : :bad), output
19
20
  end
20
21
  end
@@ -10,14 +10,15 @@ module Overcommit::GitHook
10
10
  return :warn, "'haml' gem not installed -- run `gem install haml`"
11
11
  end
12
12
 
13
- staged.each do |path|
13
+ staged.map { |s| s.path }.each do |path|
14
14
  begin
15
15
  Haml::Engine.new(File.read(path), :check_syntax => true)
16
16
  rescue Haml::Error => e
17
17
  return :bad, e.message
18
18
  end
19
19
  end
20
- return :good, nil
20
+
21
+ :good
21
22
  end
22
23
  end
23
24
  end
@@ -5,11 +5,12 @@ module Overcommit::GitHook
5
5
 
6
6
  # https://www.pivotaltracker.com/story/show/18119495
7
7
  def run_check
8
- paths = staged.join(' ')
8
+ paths = staged.map { |s| s.path }.join(' ')
9
9
  output = `grep -n -e 'console\\.log' #{paths}`.split("\n").reject do |line|
10
10
  /^\d+:\s*\/\// =~ line || # Skip comments
11
11
  /ALLOW_CONSOLE_LOG/ =~ line # and lines with ALLOW_CONSOLE_LOG
12
12
  end.join("\n")
13
+ staged.each { |s| output = s.filter_string(output) }
13
14
  return (output.empty? ? :good : :bad), output
14
15
  end
15
16
  end
@@ -6,7 +6,10 @@ module Overcommit::GitHook
6
6
  def run_check
7
7
  return :warn, 'Need either `jshint` or `rhino` in path' unless runner
8
8
 
9
- output = runner.call(staged.join(' ')).split("\n")
9
+ paths = staged.map { |s| s.path }.join(' ')
10
+ output = runner.call(paths).split("\n")
11
+ staged.each { |s| output = s.filter_string(output) }
12
+
10
13
  return (output.none? ? :good : :bad), output
11
14
  end
12
15
 
@@ -7,9 +7,9 @@ module Overcommit::GitHook
7
7
  clean = true
8
8
  output = []
9
9
  staged.each do |staged|
10
- syntax = `ruby -c #{staged} 2>&1`
10
+ syntax = `ruby -c #{staged.path} 2>&1`
11
11
  unless $?.success?
12
- output += syntax.lines.to_a
12
+ output += staged.filter_string(syntax).lines.to_a
13
13
  clean = false
14
14
  end
15
15
  end
@@ -10,10 +10,11 @@ module Overcommit::GitHook
10
10
  return :warn, 'scss-lint not installed -- run `gem install scss-lint`'
11
11
  end
12
12
 
13
- paths = staged.join(' ')
13
+ paths = staged.map { |s| s.path }.join(' ')
14
14
 
15
15
  output = `scss-lint #{paths} 2>&1`
16
16
 
17
+ staged.each { |s| output = s.filter_string(output) }
17
18
  return (output.empty? ? :good : :bad), output
18
19
  end
19
20
  end
@@ -3,8 +3,11 @@ module Overcommit::GitHook
3
3
  include HookRegistry
4
4
 
5
5
  def run_check
6
+ paths = staged.map { |s| s.path }.join(' ')
7
+
6
8
  # Catches hard tabs
7
- output = `grep -Inl "\t" #{staged.join(' ')}`
9
+ output = `grep -Inl "\t" #{paths}`
10
+ staged.each { |s| output = s.filter_string(output) }
8
11
  unless output.empty?
9
12
  return :stop, "Don't use hard tabs:\n#{output}"
10
13
  end
@@ -8,11 +8,11 @@ module Overcommit::GitHook
8
8
  def run_check
9
9
  clean = true
10
10
  output = []
11
- staged.each do |path|
11
+ staged.each do |staged_file|
12
12
  begin
13
- YAML.load_file(path)
13
+ YAML.load_file(staged_file.path)
14
14
  rescue ArgumentError => e
15
- output << "#{e.message} parsing #{path}"
15
+ output << "#{e.message} parsing #{staged_file.path}"
16
16
  clean = false
17
17
  end
18
18
  end
@@ -0,0 +1,39 @@
1
+ require 'tempfile'
2
+ # We run syntax checks against the version of the file that is staged in
3
+ # the index, not the one in the work tree. This class is a simple wrapper
4
+ # to make working with staged files easier.
5
+
6
+ module Overcommit
7
+ class StagedFile
8
+ attr_reader :contents
9
+
10
+ def initialize path
11
+ @original_path = path
12
+ @tempfile = Tempfile.new([path.gsub('/', '_'), File.extname(path)])
13
+ self.contents = `git show :#{@original_path}`
14
+ end
15
+
16
+ # Given error output from a syntax checker, replace references to the
17
+ # temporary file path with the original path.
18
+ def filter_string string
19
+ string.gsub(path, @original_path)
20
+ end
21
+
22
+ # The path of the temporary file on disk, suitable for feeding in to a
23
+ # syntax checker.
24
+ def path
25
+ @tempfile.path
26
+ end
27
+
28
+ # Set or overwrite the temporary file's contents.
29
+ #
30
+ # This is used by the ERB syntax checker, for example, to compile
31
+ # the template before checking.
32
+ def contents=(contents)
33
+ @contents = contents
34
+ @tempfile.seek 0
35
+ @tempfile.write @contents
36
+ @tempfile.flush
37
+ end
38
+ end
39
+ end
@@ -1,3 +1,3 @@
1
1
  module Overcommit
2
- VERSION = '0.1.7'
2
+ VERSION = '0.1.8'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: overcommit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-10 00:00:00.000000000 Z
12
+ date: 2013-06-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -38,6 +38,7 @@ files:
38
38
  - lib/overcommit/installer.rb
39
39
  - lib/overcommit/hook_specific_check.rb
40
40
  - lib/overcommit/reporter.rb
41
+ - lib/overcommit/staged_file.rb
41
42
  - lib/overcommit/plugins/commit_msg/hard_tabs.rb
42
43
  - lib/overcommit/plugins/commit_msg/russian_novel.rb
43
44
  - lib/overcommit/plugins/commit_msg/release_note.rb