overcommit 0.34.2 → 0.35.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/config/default.yml +26 -9
- data/lib/overcommit/hook/commit_msg/commitplease.rb +14 -0
- data/lib/overcommit/hook/pre_commit/bundle_audit.rb +21 -0
- data/lib/overcommit/hook/pre_commit/credo.rb +25 -0
- data/lib/overcommit/hook/pre_commit/java_checkstyle.rb +7 -3
- data/lib/overcommit/hook/pre_push/test_unit.rb +14 -0
- data/lib/overcommit/installer.rb +8 -13
- data/lib/overcommit/version.rb +1 -1
- data/template-dir/hooks/commit-msg +1 -1
- data/template-dir/hooks/overcommit-hook +1 -1
- data/template-dir/hooks/post-checkout +1 -1
- data/template-dir/hooks/post-commit +1 -1
- data/template-dir/hooks/post-merge +1 -1
- data/template-dir/hooks/post-rewrite +1 -1
- data/template-dir/hooks/pre-commit +1 -1
- data/template-dir/hooks/pre-push +1 -1
- data/template-dir/hooks/pre-rebase +1 -1
- metadata +7 -4
- data/lib/overcommit/hook/pre_commit/brakeman.rb +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e016461ee6c3433ae240bf3146a4b2ebbcd3917f
|
4
|
+
data.tar.gz: 5dabc49a054dbb3bd35a133ae1d69bef8fe3f0cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0e883bebdc91a518fca9afad6c731b92f25af2634cc5057d9e5aa3e9a9e4e60732c511374766b311ceda7c3c253efeadff50518f913fb117c3d280a7702e2a2c
|
7
|
+
data.tar.gz: 403d7632314359323d12f44a672e3a5c782eb6c65d8f8eab0b4d6ef0088a3c7a2fc7ef8b7265cce129277ce006c8b0c804fdb4175d5b4eb091a0409f51339748
|
data/config/default.yml
CHANGED
@@ -114,6 +114,12 @@ CommitMsg:
|
|
114
114
|
enabled: true
|
115
115
|
description: 'Check for trailing periods in subject'
|
116
116
|
|
117
|
+
Commitplease:
|
118
|
+
enabled: false
|
119
|
+
description: 'Analyze with Commitplease'
|
120
|
+
required_executable: './node_modules/.bin/commitplease'
|
121
|
+
install_command: 'npm install --save-dev commitplease'
|
122
|
+
|
117
123
|
# Hooks that are run after `git commit` is executed, before the commit message
|
118
124
|
# editor is displayed. These hooks are ideal for syntax checkers, linters, and
|
119
125
|
# other checks that you want to run before you allow a commit object to be
|
@@ -150,20 +156,17 @@ PreCommit:
|
|
150
156
|
- 'Berksfile'
|
151
157
|
- 'Berksfile.lock'
|
152
158
|
|
153
|
-
Brakeman:
|
154
|
-
enabled: false
|
155
|
-
description: 'Check for security vulnerabilities'
|
156
|
-
required_executable: 'brakeman'
|
157
|
-
flags: ['--exit-on-warn', '--quiet', '--summary', '--only-files']
|
158
|
-
install_command: 'gem install brakeman'
|
159
|
-
include:
|
160
|
-
- '**/*.rb'
|
161
|
-
|
162
159
|
BrokenSymlinks:
|
163
160
|
enabled: true
|
164
161
|
description: 'Check for broken symlinks'
|
165
162
|
quiet: true
|
166
163
|
|
164
|
+
BundleAudit:
|
165
|
+
enabled: false
|
166
|
+
description: 'Check for vulnerable versions of gems'
|
167
|
+
required_executable: 'bundle-audit'
|
168
|
+
install_command: 'gem install bundler-audit'
|
169
|
+
|
167
170
|
BundleCheck:
|
168
171
|
enabled: false
|
169
172
|
description: 'Check Gemfile dependencies'
|
@@ -205,6 +208,15 @@ PreCommit:
|
|
205
208
|
install_command: 'npm install -g coffeelint'
|
206
209
|
include: '**/*.coffee'
|
207
210
|
|
211
|
+
Credo:
|
212
|
+
enabled: false
|
213
|
+
description: 'Analyze with credo'
|
214
|
+
required_executable: 'mix'
|
215
|
+
flags: ['credo', '--all', '--strict', '--format', 'flycheck']
|
216
|
+
include:
|
217
|
+
- '**/*.ex'
|
218
|
+
- '**/*.exs'
|
219
|
+
|
208
220
|
CssLint:
|
209
221
|
enabled: false
|
210
222
|
description: 'Analyze with csslint'
|
@@ -838,6 +850,11 @@ PrePush:
|
|
838
850
|
command: ['ruby', '-Ilib:test', '-rminitest', "-e 'exit! Minitest.run'"]
|
839
851
|
include: 'test/**/*_test.rb'
|
840
852
|
|
853
|
+
TestUnit:
|
854
|
+
enabled: false
|
855
|
+
description: 'Run Test::Unit test suite'
|
856
|
+
command: ['ruby', '-Ilib:test', '-rtest/unit', "-e 'exit! Test::Unit::AutoRunner.run'"]
|
857
|
+
|
841
858
|
# Hooks that run during `git rebase`, before any commits are rebased.
|
842
859
|
# If a hook fails, the rebase is aborted.
|
843
860
|
PreRebase:
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Overcommit::Hook::CommitMsg
|
2
|
+
# Check that a commit message conforms to a certain style
|
3
|
+
#
|
4
|
+
# @see https://www.npmjs.com/package/commitplease
|
5
|
+
class Commitplease < Base
|
6
|
+
def run
|
7
|
+
result = execute(command)
|
8
|
+
output = result.stderr
|
9
|
+
return :pass if result.success? && output.empty?
|
10
|
+
|
11
|
+
[:fail, output]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Overcommit::Hook::PreCommit
|
2
|
+
# Checks for vulnerable versions of gems in Gemfile.lock.
|
3
|
+
#
|
4
|
+
# @see https://github.com/rubysec/bundler-audit
|
5
|
+
class BundleAudit < Base
|
6
|
+
LOCK_FILE = 'Gemfile.lock'.freeze
|
7
|
+
|
8
|
+
def run
|
9
|
+
# Ignore if Gemfile.lock is not tracked by git
|
10
|
+
ignored_files = execute(%w[git ls-files -o -i --exclude-standard]).stdout.split("\n")
|
11
|
+
return :pass if ignored_files.include?(LOCK_FILE)
|
12
|
+
|
13
|
+
result = execute(command)
|
14
|
+
if result.success?
|
15
|
+
:pass
|
16
|
+
else
|
17
|
+
return [:warn, result.stdout]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Overcommit::Hook::PreCommit
|
2
|
+
# Runs `credo` against any modified ex files.
|
3
|
+
#
|
4
|
+
# @see https://github.com/rrrene/credo
|
5
|
+
class Credo < Base
|
6
|
+
# example message:
|
7
|
+
# lib/file1.ex:1:11: R: Modules should have a @moduledoc tag.
|
8
|
+
# lib/file2.ex:12:81: R: Line is too long (max is 80, was 81).
|
9
|
+
|
10
|
+
def run
|
11
|
+
result = execute command
|
12
|
+
return :pass if result.success?
|
13
|
+
|
14
|
+
result.stdout.split("\n").map(&:strip).reject(&:empty?).
|
15
|
+
map { |error| message(error) }
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def message(error)
|
21
|
+
file, line = error.split(':')
|
22
|
+
Overcommit::Hook::Message.new(:error, file, Integer(line), error)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -3,18 +3,22 @@ module Overcommit::Hook::PreCommit
|
|
3
3
|
#
|
4
4
|
# @see http://checkstyle.sourceforge.net/
|
5
5
|
class JavaCheckstyle < Base
|
6
|
-
MESSAGE_REGEX = /^(\[[^\]]
|
6
|
+
MESSAGE_REGEX = /^(\[(?<type>[^\]]+)\]\s+)?(?<file>(?:\w:)?[^:]+):(?<line>\d+)/
|
7
|
+
|
8
|
+
MESSAGE_TYPE_CATEGORIZER = lambda do |type|
|
9
|
+
%w[WARN INFO].include?(type.to_s) ? :warning : :error
|
10
|
+
end
|
7
11
|
|
8
12
|
def run
|
9
13
|
result = execute(command, args: applicable_files)
|
10
14
|
output = result.stdout.chomp
|
11
|
-
return :pass if result.success?
|
12
15
|
|
13
16
|
# example message:
|
14
17
|
# path/to/file.java:3:5: Error message
|
15
18
|
extract_messages(
|
16
19
|
output.split("\n").grep(MESSAGE_REGEX),
|
17
|
-
MESSAGE_REGEX
|
20
|
+
MESSAGE_REGEX,
|
21
|
+
MESSAGE_TYPE_CATEGORIZER
|
18
22
|
)
|
19
23
|
end
|
20
24
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Overcommit::Hook::PrePush
|
2
|
+
# Runs `test-unit` test suite before push
|
3
|
+
#
|
4
|
+
# @see https://github.com/test-unit/test-unit
|
5
|
+
class TestUnit < Base
|
6
|
+
def run
|
7
|
+
result = execute(command)
|
8
|
+
return :pass if result.success?
|
9
|
+
|
10
|
+
output = result.stdout + result.stderr
|
11
|
+
[:fail, output]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/lib/overcommit/installer.rb
CHANGED
@@ -33,7 +33,7 @@ module Overcommit
|
|
33
33
|
ensure_directory(hooks_path)
|
34
34
|
preserve_old_hooks
|
35
35
|
install_master_hook
|
36
|
-
|
36
|
+
install_hook_files
|
37
37
|
install_starter_config
|
38
38
|
|
39
39
|
log.success "Successfully installed hooks into #{@target}"
|
@@ -42,7 +42,7 @@ module Overcommit
|
|
42
42
|
def uninstall
|
43
43
|
log.log "Removing hooks from #{@target}"
|
44
44
|
|
45
|
-
|
45
|
+
uninstall_hook_files
|
46
46
|
uninstall_master_hook
|
47
47
|
restore_old_hooks
|
48
48
|
|
@@ -54,7 +54,7 @@ module Overcommit
|
|
54
54
|
unless FileUtils.compare_file(MASTER_HOOK, master_hook_install_path)
|
55
55
|
preserve_old_hooks
|
56
56
|
install_master_hook
|
57
|
-
|
57
|
+
install_hook_files
|
58
58
|
|
59
59
|
log.success "Hooks updated to Overcommit version #{Overcommit::VERSION}"
|
60
60
|
true
|
@@ -103,10 +103,8 @@ module Overcommit
|
|
103
103
|
FileUtils.rm_rf(master_hook_install_path, secure: true)
|
104
104
|
end
|
105
105
|
|
106
|
-
def
|
107
|
-
#
|
108
|
-
# We change directories so that the relative symlink paths work regardless
|
109
|
-
# of where the repository is located.
|
106
|
+
def install_hook_files
|
107
|
+
# Copy each hook type (pre-commit, commit-msg, etc.) from the master hook.
|
110
108
|
Dir.chdir(hooks_path) do
|
111
109
|
Overcommit::Utils.supported_hook_types.each do |hook_type|
|
112
110
|
unless can_replace_file?(hook_type)
|
@@ -115,7 +113,7 @@ module Overcommit
|
|
115
113
|
'was not installed by Overcommit'
|
116
114
|
end
|
117
115
|
FileUtils.rm_f(hook_type)
|
118
|
-
|
116
|
+
FileUtils.cp('overcommit-hook', hook_type)
|
119
117
|
end
|
120
118
|
end
|
121
119
|
end
|
@@ -158,7 +156,7 @@ module Overcommit
|
|
158
156
|
log.success "Successfully restored old hooks from #{old_hooks_path}"
|
159
157
|
end
|
160
158
|
|
161
|
-
def
|
159
|
+
def uninstall_hook_files
|
162
160
|
return unless File.directory?(hooks_path)
|
163
161
|
|
164
162
|
Dir.chdir(hooks_path) do
|
@@ -176,10 +174,7 @@ module Overcommit
|
|
176
174
|
end
|
177
175
|
|
178
176
|
def overcommit_hook?(file)
|
179
|
-
|
180
|
-
# TODO: Remove these checks once we hit version 1.0
|
181
|
-
Overcommit::Utils::FileUtils.symlink?(file) &&
|
182
|
-
Overcommit::Utils::FileUtils.readlink(file) == 'overcommit-hook'
|
177
|
+
File.read(file) =~ /OVERCOMMIT_DISABLE/
|
183
178
|
rescue Errno::ENOENT
|
184
179
|
# Some Ruby implementations (e.g. JRuby) raise an error when the file
|
185
180
|
# doesn't exist. Standardize the behavior to return false.
|
data/lib/overcommit/version.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
# Entrypoint for Overcommit hook integration. Installing Overcommit will result
|
4
|
-
# in all of your git hooks being
|
4
|
+
# in all of your git hooks being copied from this file, allowing the framework
|
5
5
|
# to manage your hooks for you.
|
6
6
|
|
7
7
|
# Prevent a Ruby stack trace from appearing when we interrupt the hook.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
# Entrypoint for Overcommit hook integration. Installing Overcommit will result
|
4
|
-
# in all of your git hooks being
|
4
|
+
# in all of your git hooks being copied from this file, allowing the framework
|
5
5
|
# to manage your hooks for you.
|
6
6
|
|
7
7
|
# Prevent a Ruby stack trace from appearing when we interrupt the hook.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
# Entrypoint for Overcommit hook integration. Installing Overcommit will result
|
4
|
-
# in all of your git hooks being
|
4
|
+
# in all of your git hooks being copied from this file, allowing the framework
|
5
5
|
# to manage your hooks for you.
|
6
6
|
|
7
7
|
# Prevent a Ruby stack trace from appearing when we interrupt the hook.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
# Entrypoint for Overcommit hook integration. Installing Overcommit will result
|
4
|
-
# in all of your git hooks being
|
4
|
+
# in all of your git hooks being copied from this file, allowing the framework
|
5
5
|
# to manage your hooks for you.
|
6
6
|
|
7
7
|
# Prevent a Ruby stack trace from appearing when we interrupt the hook.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
# Entrypoint for Overcommit hook integration. Installing Overcommit will result
|
4
|
-
# in all of your git hooks being
|
4
|
+
# in all of your git hooks being copied from this file, allowing the framework
|
5
5
|
# to manage your hooks for you.
|
6
6
|
|
7
7
|
# Prevent a Ruby stack trace from appearing when we interrupt the hook.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
# Entrypoint for Overcommit hook integration. Installing Overcommit will result
|
4
|
-
# in all of your git hooks being
|
4
|
+
# in all of your git hooks being copied from this file, allowing the framework
|
5
5
|
# to manage your hooks for you.
|
6
6
|
|
7
7
|
# Prevent a Ruby stack trace from appearing when we interrupt the hook.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
# Entrypoint for Overcommit hook integration. Installing Overcommit will result
|
4
|
-
# in all of your git hooks being
|
4
|
+
# in all of your git hooks being copied from this file, allowing the framework
|
5
5
|
# to manage your hooks for you.
|
6
6
|
|
7
7
|
# Prevent a Ruby stack trace from appearing when we interrupt the hook.
|
data/template-dir/hooks/pre-push
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
# Entrypoint for Overcommit hook integration. Installing Overcommit will result
|
4
|
-
# in all of your git hooks being
|
4
|
+
# in all of your git hooks being copied from this file, allowing the framework
|
5
5
|
# to manage your hooks for you.
|
6
6
|
|
7
7
|
# Prevent a Ruby stack trace from appearing when we interrupt the hook.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
# Entrypoint for Overcommit hook integration. Installing Overcommit will result
|
4
|
-
# in all of your git hooks being
|
4
|
+
# in all of your git hooks being copied from this file, allowing the framework
|
5
5
|
# to manage your hooks for you.
|
6
6
|
|
7
7
|
# Prevent a Ruby stack trace from appearing when we interrupt the hook.
|
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.35.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brigade Engineering
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-08-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: childprocess
|
@@ -65,6 +65,7 @@ files:
|
|
65
65
|
- lib/overcommit/hook/base.rb
|
66
66
|
- lib/overcommit/hook/commit_msg/base.rb
|
67
67
|
- lib/overcommit/hook/commit_msg/capitalized_subject.rb
|
68
|
+
- lib/overcommit/hook/commit_msg/commitplease.rb
|
68
69
|
- lib/overcommit/hook/commit_msg/empty_message.rb
|
69
70
|
- lib/overcommit/hook/commit_msg/gerrit_change_id.rb
|
70
71
|
- lib/overcommit/hook/commit_msg/hard_tabs.rb
|
@@ -103,13 +104,14 @@ files:
|
|
103
104
|
- lib/overcommit/hook/pre_commit/author_name.rb
|
104
105
|
- lib/overcommit/hook/pre_commit/base.rb
|
105
106
|
- lib/overcommit/hook/pre_commit/berksfile_check.rb
|
106
|
-
- lib/overcommit/hook/pre_commit/brakeman.rb
|
107
107
|
- lib/overcommit/hook/pre_commit/broken_symlinks.rb
|
108
|
+
- lib/overcommit/hook/pre_commit/bundle_audit.rb
|
108
109
|
- lib/overcommit/hook/pre_commit/bundle_check.rb
|
109
110
|
- lib/overcommit/hook/pre_commit/bundle_outdated.rb
|
110
111
|
- lib/overcommit/hook/pre_commit/case_conflicts.rb
|
111
112
|
- lib/overcommit/hook/pre_commit/chamber_security.rb
|
112
113
|
- lib/overcommit/hook/pre_commit/coffee_lint.rb
|
114
|
+
- lib/overcommit/hook/pre_commit/credo.rb
|
113
115
|
- lib/overcommit/hook/pre_commit/css_lint.rb
|
114
116
|
- lib/overcommit/hook/pre_commit/dogma.rb
|
115
117
|
- lib/overcommit/hook/pre_commit/es_lint.rb
|
@@ -164,6 +166,7 @@ files:
|
|
164
166
|
- lib/overcommit/hook/pre_push/minitest.rb
|
165
167
|
- lib/overcommit/hook/pre_push/protected_branches.rb
|
166
168
|
- lib/overcommit/hook/pre_push/r_spec.rb
|
169
|
+
- lib/overcommit/hook/pre_push/test_unit.rb
|
167
170
|
- lib/overcommit/hook/pre_rebase/base.rb
|
168
171
|
- lib/overcommit/hook/pre_rebase/merged_commits.rb
|
169
172
|
- lib/overcommit/hook/shared/bower_install.rb
|
@@ -221,7 +224,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
221
224
|
requirements:
|
222
225
|
- - ">="
|
223
226
|
- !ruby/object:Gem::Version
|
224
|
-
version:
|
227
|
+
version: '2'
|
225
228
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
226
229
|
requirements:
|
227
230
|
- - ">="
|
@@ -1,13 +0,0 @@
|
|
1
|
-
module Overcommit::Hook::PreCommit
|
2
|
-
# Runs `brakeman` against any modified Ruby/Rails files.
|
3
|
-
#
|
4
|
-
# @see http://brakemanscanner.org/
|
5
|
-
class Brakeman < Base
|
6
|
-
def run
|
7
|
-
result = execute(command + [applicable_files.join(',')])
|
8
|
-
return :pass if result.success?
|
9
|
-
|
10
|
-
[:fail, result.stdout]
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|