overcommit 0.39.1 → 0.40.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/overcommit +6 -2
- data/config/default.yml +48 -2
- data/lib/overcommit/configuration.rb +1 -1
- data/lib/overcommit/git_config.rb +8 -0
- data/lib/overcommit/hook/pre_commit/hadolint.rb +25 -0
- data/lib/overcommit/hook/pre_commit/license_finder.rb +12 -0
- data/lib/overcommit/hook/pre_commit/line_endings.rb +28 -9
- data/lib/overcommit/hook/pre_commit/pronto.rb +21 -0
- data/lib/overcommit/hook/pre_commit/pycodestyle.rb +21 -0
- data/lib/overcommit/hook/pre_commit/pydocstyle.rb +21 -0
- data/lib/overcommit/installer.rb +1 -2
- data/lib/overcommit/version.rb +1 -1
- data/template-dir/hooks/pre-rebase +0 -0
- metadata +14 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ae52de060fc3a851e75bd8933c88d554ef099b2c
|
4
|
+
data.tar.gz: d8c64f104d539cb9feff13df03aea820b61ede3b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 601925f353e7745b2461637f4a3d78483593e64e4c227601f0f1df5ff249ac903019fa47c90ec34521b0e416a7108d6bd7446b5aa56a48a1ab35e39359756aad
|
7
|
+
data.tar.gz: 8b6d27df807ce37e4eb94fddb105d22aa39f3b4cc9a233732f005792c8207ce914ddf40ddae87f5394eafda3aab97ff2d39b3951c69c8775147af58766c8cb57
|
data/bin/overcommit
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
# Check if Overcommit should invoke a Bundler context for loading gems
|
4
4
|
require 'yaml'
|
5
|
-
# rubocop:disable Style/RescueModifier
|
6
5
|
if gemfile = YAML.load_file('.overcommit.yml')['gemfile'] rescue nil
|
7
6
|
ENV['BUNDLE_GEMFILE'] = gemfile
|
8
7
|
require 'bundler'
|
@@ -22,9 +21,14 @@ if gemfile = YAML.load_file('.overcommit.yml')['gemfile'] rescue nil
|
|
22
21
|
puts "Problem loading '#{gemfile}': #{ex.message}"
|
23
22
|
puts "Try running:\nbundle install --gemfile=#{gemfile}" if ex.is_a?(Bundler::GemNotFound)
|
24
23
|
exit 78 # EX_CONFIG
|
24
|
+
rescue Gem::LoadError => ex
|
25
|
+
# Handle case where user is executing overcommit without `bundle exec` and
|
26
|
+
# whose local Gemfile has a gem requirement that does not match a gem
|
27
|
+
# requirement of the installed version of Overcommit.
|
28
|
+
raise unless ex.message =~ /already activated/i
|
29
|
+
exec('bundle', 'exec', $0, *ARGV)
|
25
30
|
end
|
26
31
|
end
|
27
|
-
# rubocop:enable Style/RescueModifier
|
28
32
|
|
29
33
|
begin
|
30
34
|
require 'overcommit/cli'
|
data/config/default.yml
CHANGED
@@ -283,6 +283,13 @@ PreCommit:
|
|
283
283
|
install_command: 'go get golang.org/x/tools/cmd/vet'
|
284
284
|
include: '**/*.go'
|
285
285
|
|
286
|
+
Hadolint:
|
287
|
+
enabled: false
|
288
|
+
description: 'Analyze with hadolint'
|
289
|
+
required_executable: 'hadolint'
|
290
|
+
include:
|
291
|
+
- '**/Dockerfile*'
|
292
|
+
|
286
293
|
HamlLint:
|
287
294
|
enabled: false
|
288
295
|
description: 'Analyze with haml-lint'
|
@@ -297,6 +304,9 @@ PreCommit:
|
|
297
304
|
quiet: true
|
298
305
|
required_executable: 'grep'
|
299
306
|
flags: ['-IHn', "\t"]
|
307
|
+
exclude:
|
308
|
+
- '**/Makefile'
|
309
|
+
- '**/*.go'
|
300
310
|
|
301
311
|
Hlint:
|
302
312
|
enabled: false
|
@@ -376,6 +386,21 @@ PreCommit:
|
|
376
386
|
install_command: 'gem install json'
|
377
387
|
include: '**/*.json'
|
378
388
|
|
389
|
+
LicenseFinder:
|
390
|
+
enabled: false
|
391
|
+
description: 'Analyze with LicenseFinder'
|
392
|
+
required_executable: 'license_finder'
|
393
|
+
install_command: 'gem install license_finder'
|
394
|
+
include:
|
395
|
+
- 'Gemfile'
|
396
|
+
- 'requirements.txt'
|
397
|
+
- 'package.json'
|
398
|
+
- 'pom.xml'
|
399
|
+
- 'build.gradle'
|
400
|
+
- 'bower.json'
|
401
|
+
- 'Podfile'
|
402
|
+
- 'rebar.config'
|
403
|
+
|
379
404
|
LicenseHeader:
|
380
405
|
enabled: false
|
381
406
|
license_file: 'LICENSE.txt'
|
@@ -409,20 +434,27 @@ PreCommit:
|
|
409
434
|
flags: ['-t']
|
410
435
|
include: '**/nginx.conf'
|
411
436
|
|
412
|
-
Pep257:
|
437
|
+
Pep257: # Deprecated – use Pydocstyle instead.
|
413
438
|
enabled: false
|
414
439
|
description: 'Analyze docstrings with pep257'
|
415
440
|
required_executable: 'pep257'
|
416
441
|
install_command: 'pip install pep257'
|
417
442
|
include: '**/*.py'
|
418
443
|
|
419
|
-
Pep8:
|
444
|
+
Pep8: # Deprecated – use Pycodestyle instead.
|
420
445
|
enabled: false
|
421
446
|
description: 'Analyze with pep8'
|
422
447
|
required_executable: 'pep8'
|
423
448
|
install_command: 'pip install pep8'
|
424
449
|
include: '**/*.py'
|
425
450
|
|
451
|
+
Pronto:
|
452
|
+
enabled: false
|
453
|
+
description: 'Analyzing with pronto'
|
454
|
+
required_executable: 'pronto'
|
455
|
+
install_command: 'gem install pronto'
|
456
|
+
flags: ['run', '--staged', '--exit-code']
|
457
|
+
|
426
458
|
PuppetLint:
|
427
459
|
enabled: false
|
428
460
|
description: 'Analyze with puppet-lint'
|
@@ -434,6 +466,20 @@ PreCommit:
|
|
434
466
|
- '--error-level=all'
|
435
467
|
include: '**/*.pp'
|
436
468
|
|
469
|
+
Pycodestyle:
|
470
|
+
enabled: false
|
471
|
+
description: 'Analyze with pycodestyle'
|
472
|
+
required_executable: 'pycodestyle'
|
473
|
+
install_command: 'pip install pycodestyle'
|
474
|
+
include: '**/*.py'
|
475
|
+
|
476
|
+
Pydocstyle:
|
477
|
+
enabled: false
|
478
|
+
description: 'Analyze docstrings with pydocstyle'
|
479
|
+
required_executable: 'pydocstyle'
|
480
|
+
install_command: 'pip install pydocstyle'
|
481
|
+
include: '**/*.py'
|
482
|
+
|
437
483
|
Pyflakes:
|
438
484
|
enabled: false
|
439
485
|
description: 'Analyze with pyflakes'
|
@@ -41,7 +41,7 @@ module Overcommit
|
|
41
41
|
@concurrency ||=
|
42
42
|
begin
|
43
43
|
cores = Overcommit::Utils.processor_count
|
44
|
-
content = @hash.fetch('concurrency', '
|
44
|
+
content = @hash.fetch('concurrency', '%<processors>d')
|
45
45
|
if content.is_a?(String)
|
46
46
|
concurrency_expr = content % { processors: cores }
|
47
47
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'overcommit/utils'
|
2
|
+
|
1
3
|
module Overcommit
|
2
4
|
# Get configuration options from git
|
3
5
|
module GitConfig
|
@@ -8,5 +10,11 @@ module Overcommit
|
|
8
10
|
char = '#' if char == ''
|
9
11
|
char
|
10
12
|
end
|
13
|
+
|
14
|
+
def hooks_path
|
15
|
+
path = `git config --get core.hooksPath`.chomp
|
16
|
+
return File.join(Overcommit::Utils.repo_root, '.git', 'hooks') if path.empty?
|
17
|
+
File.absolute_path(path)
|
18
|
+
end
|
11
19
|
end
|
12
20
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Overcommit::Hook::PreCommit
|
2
|
+
# Runs `hadolint` against any modified Dockefile files.
|
3
|
+
#
|
4
|
+
# @see http://hadolint.lukasmartinelli.ch/
|
5
|
+
class Hadolint < Base
|
6
|
+
def run
|
7
|
+
output = ''
|
8
|
+
success = true
|
9
|
+
|
10
|
+
# hadolint doesn't accept multiple arguments
|
11
|
+
applicable_files.each do |dockerfile|
|
12
|
+
result = execute(command, args: Array(dockerfile))
|
13
|
+
output += result.stdout
|
14
|
+
success &&= result.success?
|
15
|
+
end
|
16
|
+
|
17
|
+
return :pass if success
|
18
|
+
|
19
|
+
extract_messages(
|
20
|
+
output.split("\n"),
|
21
|
+
/^(?<file>[^:]+):(?<line>\d+)/,
|
22
|
+
)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Overcommit::Hook::PreCommit
|
2
|
+
# Runs LicenseFinder if any of your package manager declaration files have changed
|
3
|
+
# See more about LicenseFinder at https://github.com/pivotal/LicenseFinde
|
4
|
+
class LicenseFinder < Base
|
5
|
+
def run
|
6
|
+
result = execute(command)
|
7
|
+
return :pass if result.success?
|
8
|
+
output = result.stdout + result.stderr
|
9
|
+
[:fail, output]
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -8,18 +8,16 @@ module Overcommit::Hook::PreCommit
|
|
8
8
|
|
9
9
|
offending_files.map do |file_name|
|
10
10
|
file = File.open(file_name)
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
#
|
16
|
-
next unless line.end_with?("\n", "\r")
|
17
|
-
|
11
|
+
begin
|
12
|
+
messages += check_file(file, file_name)
|
13
|
+
rescue ArgumentError => ex
|
14
|
+
# File is likely a binary file which this check should ignore, but
|
15
|
+
# print a warning just in case
|
18
16
|
messages << Overcommit::Hook::Message.new(
|
19
|
-
:
|
17
|
+
:warning,
|
20
18
|
file_name,
|
21
19
|
file.lineno,
|
22
|
-
"#{file_name}:#{file.lineno}:#{
|
20
|
+
"#{file_name}:#{file.lineno}:#{ex.message}"
|
23
21
|
)
|
24
22
|
end
|
25
23
|
end
|
@@ -29,6 +27,27 @@ module Overcommit::Hook::PreCommit
|
|
29
27
|
|
30
28
|
private
|
31
29
|
|
30
|
+
def check_file(file, file_name)
|
31
|
+
messages_for_file = []
|
32
|
+
|
33
|
+
file.each_line do |line|
|
34
|
+
# Remove configured line-ending
|
35
|
+
line.gsub!(/#{config['eol']}/, '')
|
36
|
+
|
37
|
+
# Detect any left over line-ending characters
|
38
|
+
next unless line.end_with?("\n", "\r")
|
39
|
+
|
40
|
+
messages_for_file << Overcommit::Hook::Message.new(
|
41
|
+
:error,
|
42
|
+
file_name,
|
43
|
+
file.lineno,
|
44
|
+
"#{file_name}:#{file.lineno}:#{line.inspect}"
|
45
|
+
)
|
46
|
+
end
|
47
|
+
|
48
|
+
messages_for_file
|
49
|
+
end
|
50
|
+
|
32
51
|
def offending_files
|
33
52
|
result = execute(%w[git ls-files --eol -z --], args: applicable_files)
|
34
53
|
raise 'Unable to access git tree' unless result.success?
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Overcommit::Hook::PreCommit
|
2
|
+
# Runs `pronto`
|
3
|
+
#
|
4
|
+
# @see https://github.com/mmozuras/pronto
|
5
|
+
class Pronto < Base
|
6
|
+
MESSAGE_TYPE_CATEGORIZER = lambda do |type|
|
7
|
+
type.include?('E') ? :error : :warning
|
8
|
+
end
|
9
|
+
|
10
|
+
def run
|
11
|
+
result = execute(command)
|
12
|
+
return :pass if result.success?
|
13
|
+
|
14
|
+
extract_messages(
|
15
|
+
result.stdout.split("\n"),
|
16
|
+
/^(?<file>(?:\w:)?[^:]+):(?<line>\d+) (?<type>[^ ]+)/,
|
17
|
+
MESSAGE_TYPE_CATEGORIZER,
|
18
|
+
)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Overcommit::Hook::PreCommit
|
2
|
+
# Runs `pycodestyle` against any modified Python files.
|
3
|
+
#
|
4
|
+
# @see https://pypi.python.org/pypi/pycodestyle
|
5
|
+
class Pycodestyle < Base
|
6
|
+
def run
|
7
|
+
result = execute(command, args: applicable_files)
|
8
|
+
output = result.stdout.chomp
|
9
|
+
|
10
|
+
return :pass if result.success? && output.empty?
|
11
|
+
|
12
|
+
# example message:
|
13
|
+
# path/to/file.py:88:5: E301 expected 1 blank line, found 0
|
14
|
+
extract_messages(
|
15
|
+
output.split("\n"),
|
16
|
+
/^(?<file>(?:\w:)?[^:]+):(?<line>\d+):\d+:\s(?<type>E|W)/,
|
17
|
+
lambda { |type| type.include?('W') ? :warning : :error }
|
18
|
+
)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Overcommit::Hook::PreCommit
|
2
|
+
# Runs `pydocstyle` against any modified Python files.
|
3
|
+
#
|
4
|
+
# @see https://pypi.python.org/pypi/pydocstyle
|
5
|
+
class Pydocstyle < Base
|
6
|
+
def run
|
7
|
+
result = execute(command, args: applicable_files)
|
8
|
+
return :pass if result.success?
|
9
|
+
|
10
|
+
output = result.stderr.chomp
|
11
|
+
|
12
|
+
# example message:
|
13
|
+
# path/to/file.py:1 in public method `foo`:
|
14
|
+
# D102: Docstring missing
|
15
|
+
extract_messages(
|
16
|
+
output.gsub(/:\s+/, ': ').split("\n"),
|
17
|
+
/^(?<file>(?:\w:)?[^:]+):(?<line>\d+)/
|
18
|
+
)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/overcommit/installer.rb
CHANGED
data/lib/overcommit/version.rb
CHANGED
File without changes
|
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.
|
4
|
+
version: 0.40.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brigade Engineering
|
@@ -9,13 +9,16 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-06-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: childprocess
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0.6'
|
21
|
+
- - ">="
|
19
22
|
- !ruby/object:Gem::Version
|
20
23
|
version: 0.6.3
|
21
24
|
type: :runtime
|
@@ -23,6 +26,9 @@ dependencies:
|
|
23
26
|
version_requirements: !ruby/object:Gem::Requirement
|
24
27
|
requirements:
|
25
28
|
- - "~>"
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '0.6'
|
31
|
+
- - ">="
|
26
32
|
- !ruby/object:Gem::Version
|
27
33
|
version: 0.6.3
|
28
34
|
- !ruby/object:Gem::Dependency
|
@@ -122,6 +128,7 @@ files:
|
|
122
128
|
- lib/overcommit/hook/pre_commit/forbidden_branches.rb
|
123
129
|
- lib/overcommit/hook/pre_commit/go_lint.rb
|
124
130
|
- lib/overcommit/hook/pre_commit/go_vet.rb
|
131
|
+
- lib/overcommit/hook/pre_commit/hadolint.rb
|
125
132
|
- lib/overcommit/hook/pre_commit/haml_lint.rb
|
126
133
|
- lib/overcommit/hook/pre_commit/hard_tabs.rb
|
127
134
|
- lib/overcommit/hook/pre_commit/hlint.rb
|
@@ -134,6 +141,7 @@ files:
|
|
134
141
|
- lib/overcommit/hook/pre_commit/jscs.rb
|
135
142
|
- lib/overcommit/hook/pre_commit/jsl.rb
|
136
143
|
- lib/overcommit/hook/pre_commit/json_syntax.rb
|
144
|
+
- lib/overcommit/hook/pre_commit/license_finder.rb
|
137
145
|
- lib/overcommit/hook/pre_commit/license_header.rb
|
138
146
|
- lib/overcommit/hook/pre_commit/line_endings.rb
|
139
147
|
- lib/overcommit/hook/pre_commit/local_paths_in_gemfile.rb
|
@@ -142,7 +150,10 @@ files:
|
|
142
150
|
- lib/overcommit/hook/pre_commit/nginx_test.rb
|
143
151
|
- lib/overcommit/hook/pre_commit/pep257.rb
|
144
152
|
- lib/overcommit/hook/pre_commit/pep8.rb
|
153
|
+
- lib/overcommit/hook/pre_commit/pronto.rb
|
145
154
|
- lib/overcommit/hook/pre_commit/puppet_lint.rb
|
155
|
+
- lib/overcommit/hook/pre_commit/pycodestyle.rb
|
156
|
+
- lib/overcommit/hook/pre_commit/pydocstyle.rb
|
146
157
|
- lib/overcommit/hook/pre_commit/pyflakes.rb
|
147
158
|
- lib/overcommit/hook/pre_commit/pylint.rb
|
148
159
|
- lib/overcommit/hook/pre_commit/python_flake8.rb
|
@@ -246,9 +257,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
246
257
|
version: '0'
|
247
258
|
requirements: []
|
248
259
|
rubyforge_project:
|
249
|
-
rubygems_version: 2.
|
260
|
+
rubygems_version: 2.6.12
|
250
261
|
signing_key:
|
251
262
|
specification_version: 4
|
252
263
|
summary: Git hook manager
|
253
264
|
test_files: []
|
254
|
-
has_rdoc:
|