pre-commit 0.14.1 → 0.15.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 146ff306168faa568a2db1614600c154eb8790c1
4
- data.tar.gz: 76fd5d6e65008b287bc813ad2e42fc5a87541bba
3
+ metadata.gz: 3b3925dbdc545f62cd3ac2f1ecc78e95f79ba2be
4
+ data.tar.gz: 3fb7a0973a89765ac6ddd1898c8a2d379759ad6b
5
5
  SHA512:
6
- metadata.gz: 384ffcb1c896628d770dff7cb4350441dfbea8d1b8f01b49292b724b44fea8a1c3aaead9b4756565669c310bf96bdf120cca8ba728a452d4194073833f40e622
7
- data.tar.gz: a877a6837d4511adbc62b971d631017c6dbb209d379c0df5998b2d01b992a3834daac0143d35bf9eabbc3e5bcf856d558346885c6158e23e7e32d2b46c4834b5
6
+ metadata.gz: 052c70e54f7833c4adb7094cdfd73ea90664046f8af25d9a8c2cb50a933de025bad522a7872c23e08639ba485f5a43d36ec037117d3d6297a2f422daa13938e6
7
+ data.tar.gz: e6d37cbb422edd64b9714947904452963e9e1272dccbb2a98886646e8b75e2a6846ba67fcac40aa20e1a95025242d8565289b2b6be250a5f2053d941052cc2ed
data/README.md CHANGED
@@ -86,10 +86,11 @@ Example `config/pre_commit.yml`:
86
86
 
87
87
  ## Configuration providers
88
88
 
89
- `pre-commit` comes with 3 configuration providers:
89
+ `pre-commit` comes with 4 configuration providers:
90
90
 
91
91
  - `default` - basic settings, read only
92
92
  - `git` - reads configuration from `git config pre-commit.*`, allow local update
93
93
  - `yaml` - reads configuration from `/etc/pre-commit.yml`, `$HOME/.pre-commit.yml` and `config/pre-commit.yml`, allows `config/pre-commit.yml` updates
94
+ - `env` - reads configuration from environment variables
94
95
 
95
96
  ## [Contributing](CONTRIBUTING.md)
@@ -9,12 +9,20 @@ module PreCommit
9
9
  staged_files = staged_files.grep(/\.coffee$/)
10
10
  return if staged_files.empty?
11
11
 
12
- args = staged_files.join(' ')
12
+ args = (config_file_flag + staged_files).join(' ')
13
13
 
14
14
  stdout, stderr, result = Open3.capture3("coffeelint #{args}")
15
15
  stdout + stderr unless result.success?
16
16
  end
17
17
 
18
+ def config_file_flag
19
+ config_file ? ['-f', config_file] : []
20
+ end
21
+
22
+ def alternate_config_file
23
+ 'coffeelint.json'
24
+ end
25
+
18
26
  def self.description
19
27
  "Runs coffeelint to detect errors"
20
28
  end
@@ -4,8 +4,8 @@ module PreCommit
4
4
  module Checks
5
5
  class Jshint < Js
6
6
 
7
- def config
8
- if config_file = [ENV['JSHINT_CONFIG'], ".jshintrc"].compact.detect { |f| File.exist?(f) }
7
+ def js_config
8
+ if config_file
9
9
  ExecJS.exec("return (#{File.read(config_file)});")
10
10
  else
11
11
  {}
@@ -14,13 +14,17 @@ module PreCommit
14
14
 
15
15
  def run_check(file)
16
16
  context = ExecJS.compile(File.read(linter_src))
17
- context.call("JSHINT", File.read(file), config, config["globals"])
17
+ context.call("JSHINT", File.read(file), js_config, js_config["globals"])
18
18
  end
19
19
 
20
20
  def linter_src
21
21
  File.expand_path("../../../../pre-commit/support/jshint/jshint.js", __FILE__)
22
22
  end
23
23
 
24
+ def alternate_config_file
25
+ ".jshintrc"
26
+ end
27
+
24
28
  def self.description
25
29
  "Checks javascript files with JSHint."
26
30
  end
@@ -20,21 +20,8 @@ module PreCommit
20
20
  else
21
21
  staged_files = staged_files.grep(/\.rb$/)
22
22
  return if staged_files.empty?
23
- config_file = config.get('rubocop.config')
24
-
25
- args = staged_files
26
- if !config_file.empty?
27
- if !File.exist? config_file
28
- $stderr.puts "Warning: rubocop config file '" + config_file + "' does not exist"
29
- $stderr.puts "Set the path to the config file using:"
30
- $stderr.puts "\tgit config pre-commit.rubocop.config 'path/relative/to/git/dir/rubocop.yml'"
31
- $stderr.puts "Or in 'config/pre-commit.yml':"
32
- $stderr.puts "\trubocop.config: path/relative/to/git/dir/rubocop.yml"
33
- $stderr.puts "rubocop will use its default configuration or look for a .rubocop.yml file\n\n"
34
- else
35
- args = ['-c', config_file] + args
36
- end
37
- end
23
+
24
+ args = config_file_flag + staged_files
38
25
 
39
26
  success, captured = capture { ::Rubocop::CLI.new.run(args) == 0 }
40
27
  captured unless success
@@ -50,6 +37,14 @@ module PreCommit
50
37
  $stderr = stderr
51
38
  end
52
39
 
40
+ def config_file_flag
41
+ config_file ? ['-c', config_file] : []
42
+ end
43
+
44
+ def alternate_config_file
45
+ '.rubocop.yml'
46
+ end
47
+
53
48
  def self.description
54
49
  "Runs rubocop to detect errors."
55
50
  end
@@ -0,0 +1,26 @@
1
+ module PreCommit
2
+ class Configuration
3
+ class Providers
4
+
5
+ class Env
6
+ def self.priority
7
+ 30
8
+ end
9
+
10
+ def [](name)
11
+ ENV[key(name)]
12
+ end
13
+
14
+ def update(name, value)
15
+ ENV[key(name)] = value
16
+ end
17
+
18
+ private
19
+
20
+ def key(name)
21
+ name.to_s.upcase.split('.').join('_')
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,6 +1,11 @@
1
+ require 'plugins/pluginator/extensions/conversions'
2
+ require 'pre-commit/checks/plugin/config_file'
3
+
1
4
  module PreCommit
2
5
  module Checks
3
6
  class Plugin
7
+ include Pluginator::Extensions::Conversions
8
+
4
9
  attr_accessor :pluginator, :config
5
10
 
6
11
  def initialize(pluginator, config, list)
@@ -8,6 +13,21 @@ module PreCommit
8
13
  @config = config
9
14
  @list = list
10
15
  end
16
+
17
+ def name
18
+ class2string(class2name(self.class))
19
+ end
20
+
21
+ private
22
+
23
+ def config_file
24
+ @config_file ||= ConfigFile.new(name, config, alternate_config_file)
25
+ @config_file.location
26
+ end
27
+
28
+ def alternate_config_file
29
+ ''
30
+ end
11
31
  end
12
32
  end
13
33
  end
@@ -0,0 +1,68 @@
1
+ module PreCommit
2
+ module Checks
3
+ class Plugin
4
+ class ConfigFile
5
+ def initialize(name, config, alternate_location)
6
+ @name = name
7
+ @config = config
8
+ @alternate_location = alternate_location
9
+ end
10
+
11
+ def location
12
+ return @location if defined?(@location)
13
+
14
+ @location = location_from_config || location_from_alternate
15
+ end
16
+
17
+ private
18
+ attr_reader :name, :config, :alternate_location
19
+
20
+ def location_from_config
21
+ location_from(config_location, true)
22
+ end
23
+
24
+ def location_from_alternate
25
+ location_from(alternate_location)
26
+ end
27
+
28
+ def location_from(location, show_usage = false)
29
+ if location && !location.empty?
30
+ if File.exist?(location)
31
+ location
32
+ else
33
+ usage if show_usage
34
+ nil
35
+ end
36
+ end
37
+ end
38
+
39
+ def config_location
40
+ @config_location ||= config.get(property_name)
41
+ end
42
+
43
+ def property_name
44
+ "#{name}.config"
45
+ end
46
+
47
+ def environment_variable_name
48
+ "#{name.upcase}_CONFIG"
49
+ end
50
+
51
+ def yaml_property_name
52
+ property_name.gsub(/_/, '.')
53
+ end
54
+
55
+ def usage
56
+ $stderr.puts "Warning: #{name} config file '#{config_location}' does not exist"
57
+ $stderr.puts "Set the path to the config file using:"
58
+ $stderr.puts "\tgit config pre-commit.#{property_name} 'path/relative/to/git/dir/#{name}.config'"
59
+ $stderr.puts "Or in 'config/pre-commit.yml':"
60
+ $stderr.puts "\t#{yaml_property_name}: path/relative/to/git/dir/#{name}.config"
61
+ $stderr.puts "Or set the environment variable:"
62
+ $stderr.puts "\texport #{environment_variable_name}='path/relative/to/git/dir/#{name}.config'"
63
+ $stderr.puts "#{name} will look for a configuration file in the project root or use its default behavior.\n\n"
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
metadata CHANGED
@@ -1,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pre-commit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.1
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shajith Chacko, Josh Lubaway
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-04 00:00:00.000000000 Z
11
+ date: 2014-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pluginator
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: guard
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '2.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '2.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: guard-minitest
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '2.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: '2.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: minitest
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
75
  version: '4.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ~>
81
81
  - !ruby/object:Gem::Version
82
82
  version: '4.0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: minitest-reporters
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ~>
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ~>
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  description: A git pre-commit hook written in ruby with a few more tricks up its sleeve
@@ -102,7 +102,6 @@ extensions: []
102
102
  extra_rdoc_files:
103
103
  - README.md
104
104
  files:
105
- - README.md
106
105
  - bin/pre-commit
107
106
  - lib/plugins/pluginator/extensions/find_check.rb
108
107
  - lib/plugins/pre_commit/checks/before_all.rb
@@ -130,19 +129,20 @@ files:
130
129
  - lib/plugins/pre_commit/checks/ruby_symbol_hashrockets.rb
131
130
  - lib/plugins/pre_commit/checks/tabs.rb
132
131
  - lib/plugins/pre_commit/checks/whitespace.rb
133
- - lib/plugins/pre_commit/configuration/providers/README.md
134
132
  - lib/plugins/pre_commit/configuration/providers/default.rb
133
+ - lib/plugins/pre_commit/configuration/providers/env.rb
135
134
  - lib/plugins/pre_commit/configuration/providers/git.rb
136
135
  - lib/plugins/pre_commit/configuration/providers/git_old.rb
136
+ - lib/plugins/pre_commit/configuration/providers/README.md
137
137
  - lib/plugins/pre_commit/configuration/providers/yaml.rb
138
- - lib/pre-commit.rb
139
- - lib/pre-commit/checks.rb
140
138
  - lib/pre-commit/checks/grep.rb
141
139
  - lib/pre-commit/checks/js.rb
140
+ - lib/pre-commit/checks/plugin/config_file.rb
142
141
  - lib/pre-commit/checks/plugin.rb
142
+ - lib/pre-commit/checks.rb
143
143
  - lib/pre-commit/cli.rb
144
- - lib/pre-commit/configuration.rb
145
144
  - lib/pre-commit/configuration/providers.rb
145
+ - lib/pre-commit/configuration.rb
146
146
  - lib/pre-commit/installer.rb
147
147
  - lib/pre-commit/list_evaluator.rb
148
148
  - lib/pre-commit/plugins_list.rb
@@ -153,32 +153,34 @@ files:
153
153
  - lib/pre-commit/support/jslint/lint.js
154
154
  - lib/pre-commit/utils/git_conversions.rb
155
155
  - lib/pre-commit/utils/staged_files.rb
156
+ - lib/pre-commit.rb
156
157
  - templates/hooks/automatic
157
158
  - templates/hooks/default
158
159
  - templates/hooks/manual
160
+ - README.md
159
161
  homepage: http://github.com/jish/pre-commit
160
162
  licenses:
161
163
  - Apache 2.0
162
164
  metadata: {}
163
165
  post_install_message:
164
166
  rdoc_options:
165
- - "--main"
167
+ - --main
166
168
  - README.md
167
169
  require_paths:
168
170
  - lib
169
171
  required_ruby_version: !ruby/object:Gem::Requirement
170
172
  requirements:
171
- - - ">="
173
+ - - '>='
172
174
  - !ruby/object:Gem::Version
173
175
  version: '0'
174
176
  required_rubygems_version: !ruby/object:Gem::Requirement
175
177
  requirements:
176
- - - ">="
178
+ - - '>='
177
179
  - !ruby/object:Gem::Version
178
180
  version: '0'
179
181
  requirements: []
180
182
  rubyforge_project:
181
- rubygems_version: 2.2.0
183
+ rubygems_version: 2.1.11
182
184
  signing_key:
183
185
  specification_version: 3
184
186
  summary: A slightly better git pre-commit hook