overcommit 0.57.0 → 0.59.1
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 +4 -4
- data/bin/overcommit +6 -5
- data/config/default.yml +20 -0
- data/lib/overcommit/cli.rb +14 -13
- data/lib/overcommit/command_splitter.rb +2 -0
- data/lib/overcommit/configuration.rb +1 -1
- data/lib/overcommit/configuration_loader.rb +11 -8
- data/lib/overcommit/git_config.rb +1 -0
- data/lib/overcommit/git_repo.rb +4 -4
- data/lib/overcommit/hook/commit_msg/spell_check.rb +1 -1
- data/lib/overcommit/hook/commit_msg/text_width.rb +1 -1
- data/lib/overcommit/hook/post_checkout/base.rb +1 -0
- data/lib/overcommit/hook/post_commit/git_guilt.rb +2 -1
- data/lib/overcommit/hook/pre_commit/bundle_audit.rb +1 -1
- data/lib/overcommit/hook/pre_commit/chamber_compare.rb +5 -5
- data/lib/overcommit/hook/pre_commit/chamber_security.rb +1 -0
- data/lib/overcommit/hook/pre_commit/coffee_lint.rb +1 -1
- data/lib/overcommit/hook/pre_commit/css_lint.rb +1 -1
- data/lib/overcommit/hook/pre_commit/dart_analyzer.rb +22 -0
- data/lib/overcommit/hook/pre_commit/erb_lint.rb +1 -1
- data/lib/overcommit/hook/pre_commit/es_lint.rb +3 -6
- data/lib/overcommit/hook/pre_commit/fasterer.rb +1 -1
- data/lib/overcommit/hook/pre_commit/foodcritic.rb +3 -1
- data/lib/overcommit/hook/pre_commit/hlint.rb +1 -1
- data/lib/overcommit/hook/pre_commit/html_tidy.rb +1 -1
- data/lib/overcommit/hook/pre_commit/java_checkstyle.rb +1 -1
- data/lib/overcommit/hook/pre_commit/js_lint.rb +1 -1
- data/lib/overcommit/hook/pre_commit/jsl.rb +1 -1
- data/lib/overcommit/hook/pre_commit/kt_lint.rb +1 -1
- data/lib/overcommit/hook/pre_commit/license_finder.rb +1 -0
- data/lib/overcommit/hook/pre_commit/line_endings.rb +3 -2
- data/lib/overcommit/hook/pre_commit/nginx_test.rb +1 -1
- data/lib/overcommit/hook/pre_commit/php_cs.rb +1 -1
- data/lib/overcommit/hook/pre_commit/php_cs_fixer.rb +1 -1
- data/lib/overcommit/hook/pre_commit/php_lint.rb +3 -3
- data/lib/overcommit/hook/pre_commit/php_stan.rb +1 -1
- data/lib/overcommit/hook/pre_commit/puppet_lint.rb +1 -1
- data/lib/overcommit/hook/pre_commit/puppet_metadata_json_lint.rb +1 -1
- data/lib/overcommit/hook/pre_commit/pyflakes.rb +1 -1
- data/lib/overcommit/hook/pre_commit/pylint.rb +1 -1
- data/lib/overcommit/hook/pre_commit/python_flake8.rb +1 -1
- data/lib/overcommit/hook/pre_commit/rails_best_practices.rb +1 -1
- data/lib/overcommit/hook/pre_commit/rails_schema_up_to_date.rb +2 -2
- data/lib/overcommit/hook/pre_commit/rst_lint.rb +1 -1
- data/lib/overcommit/hook/pre_commit/scalariform.rb +1 -1
- data/lib/overcommit/hook/pre_commit/scalastyle.rb +1 -1
- data/lib/overcommit/hook/pre_commit/scss_lint.rb +3 -3
- data/lib/overcommit/hook/pre_commit/semi_standard.rb +1 -1
- data/lib/overcommit/hook/pre_commit/sqlint.rb +1 -1
- data/lib/overcommit/hook/pre_commit/standard.rb +1 -1
- data/lib/overcommit/hook/pre_commit/stylelint.rb +2 -1
- data/lib/overcommit/hook/pre_commit/swift_lint.rb +1 -1
- data/lib/overcommit/hook/pre_commit/ts_lint.rb +4 -4
- data/lib/overcommit/hook/pre_commit/w3c_css.rb +4 -4
- data/lib/overcommit/hook/pre_commit/w3c_html.rb +4 -4
- data/lib/overcommit/hook/pre_commit/xml_lint.rb +1 -1
- data/lib/overcommit/hook/pre_commit/yaml_lint.rb +25 -4
- data/lib/overcommit/hook/pre_commit/yaml_syntax.rb +7 -3
- data/lib/overcommit/hook/pre_commit/yard_coverage.rb +0 -1
- data/lib/overcommit/hook/pre_push/cargo_test.rb +1 -0
- data/lib/overcommit/hook/pre_push/flutter_test.rb +16 -0
- data/lib/overcommit/hook/pre_push/pub_test.rb +16 -0
- data/lib/overcommit/hook/prepare_commit_msg/base.rb +1 -0
- data/lib/overcommit/hook/prepare_commit_msg/replace_branch.rb +1 -1
- data/lib/overcommit/hook/shared/bower_install.rb +1 -0
- data/lib/overcommit/hook/shared/bundle_install.rb +1 -0
- data/lib/overcommit/hook/shared/composer_install.rb +1 -0
- data/lib/overcommit/hook/shared/npm_install.rb +1 -0
- data/lib/overcommit/hook/shared/pronto.rb +16 -4
- data/lib/overcommit/hook/shared/yarn_install.rb +1 -0
- data/lib/overcommit/hook_context/helpers/file_modifications.rb +1 -0
- data/lib/overcommit/hook_context/helpers/stash_unstaged_changes.rb +4 -1
- data/lib/overcommit/hook_context/post_commit.rb +1 -0
- data/lib/overcommit/hook_context/pre_push.rb +1 -0
- data/lib/overcommit/hook_context/run_all.rb +1 -0
- data/lib/overcommit/hook_context.rb +3 -3
- data/lib/overcommit/hook_loader/base.rb +3 -3
- data/lib/overcommit/hook_loader/plugin_hook_loader.rb +3 -3
- data/lib/overcommit/hook_runner.rb +8 -7
- data/lib/overcommit/hook_signer.rb +1 -0
- data/lib/overcommit/installer.rb +2 -1
- data/lib/overcommit/logger.rb +5 -0
- data/lib/overcommit/printer.rb +3 -4
- data/lib/overcommit/subprocess.rb +2 -1
- data/lib/overcommit/utils/messages_utils.rb +1 -0
- data/lib/overcommit/version.rb +1 -1
- data/libexec/index-tags +6 -4
- data/template-dir/hooks/commit-msg +27 -20
- data/template-dir/hooks/overcommit-hook +27 -20
- data/template-dir/hooks/post-checkout +27 -20
- data/template-dir/hooks/post-commit +27 -20
- data/template-dir/hooks/post-merge +27 -20
- data/template-dir/hooks/post-rewrite +27 -20
- data/template-dir/hooks/pre-commit +27 -20
- data/template-dir/hooks/pre-push +27 -20
- data/template-dir/hooks/pre-rebase +27 -20
- data/template-dir/hooks/prepare-commit-msg +27 -20
- metadata +20 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7cef58909a16cc684b9f11e232eb5329d093fc7ceeeb5a4d9434459d0169395c
|
4
|
+
data.tar.gz: e5839562da56c532ce493bf0582061ec41a873342a79c70f516302ee27e5b910
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d3c89be131243e7010236164d1b6ebd480e62865c63960d965c12a48c40c6ad726b2fba61c7daaf0732a0a865ac8f45a71486413b5c74c9d4bb91c190a02360d
|
7
|
+
data.tar.gz: 66996e68b9c3eee70c4d636071e23981537a2e0911c4fef6c519a23707c34252ed9a5ca6348fd796cd9f151138639d9f9667d497ea2fae816e98d4b305512bc6
|
data/bin/overcommit
CHANGED
@@ -18,15 +18,16 @@ if gemfile = YAML.load_file('.overcommit.yml')['gemfile'] rescue nil
|
|
18
18
|
ensure
|
19
19
|
$stderr = old_stderr
|
20
20
|
end
|
21
|
-
rescue Bundler::BundlerError =>
|
22
|
-
puts "Problem loading '#{gemfile}': #{
|
23
|
-
puts "Try running:\nbundle install --gemfile=#{gemfile}" if
|
21
|
+
rescue Bundler::BundlerError => e
|
22
|
+
puts "Problem loading '#{gemfile}': #{e.message}"
|
23
|
+
puts "Try running:\nbundle install --gemfile=#{gemfile}" if e.is_a?(Bundler::GemNotFound)
|
24
24
|
exit 78 # EX_CONFIG
|
25
|
-
rescue Gem::LoadError =>
|
25
|
+
rescue Gem::LoadError => e
|
26
26
|
# Handle case where user is executing overcommit without `bundle exec` and
|
27
27
|
# whose local Gemfile has a gem requirement that does not match a gem
|
28
28
|
# requirement of the installed version of Overcommit.
|
29
|
-
raise unless
|
29
|
+
raise unless e.message =~ /already activated/i
|
30
|
+
|
30
31
|
exec('bundle', 'exec', $0, *ARGV)
|
31
32
|
end
|
32
33
|
end
|
data/config/default.yml
CHANGED
@@ -266,6 +266,14 @@ PreCommit:
|
|
266
266
|
install_command: 'npm install -g csslint'
|
267
267
|
include: '**/*.css'
|
268
268
|
|
269
|
+
DartAnalyzer:
|
270
|
+
enabled: false
|
271
|
+
description: 'Analyze with dartanalyzer'
|
272
|
+
required_executable: 'dartanalyzer'
|
273
|
+
flags: []
|
274
|
+
include:
|
275
|
+
- '**/*.dart'
|
276
|
+
|
269
277
|
Dogma:
|
270
278
|
enabled: false
|
271
279
|
description: 'Analyze with dogma'
|
@@ -1276,6 +1284,12 @@ PrePush:
|
|
1276
1284
|
flags: ['test']
|
1277
1285
|
include: 'src/**/*.rs'
|
1278
1286
|
|
1287
|
+
FlutterTest:
|
1288
|
+
enabled: false
|
1289
|
+
description: 'Run flutter test suite'
|
1290
|
+
required_executable: 'flutter'
|
1291
|
+
flags: ['test']
|
1292
|
+
|
1279
1293
|
GitLfs:
|
1280
1294
|
enabled: false
|
1281
1295
|
description: 'Upload files tracked by Git LFS'
|
@@ -1322,6 +1336,12 @@ PrePush:
|
|
1322
1336
|
destructive_only: true
|
1323
1337
|
branches: ['master']
|
1324
1338
|
|
1339
|
+
PubTest:
|
1340
|
+
enabled: false
|
1341
|
+
description: 'Run pub test suite'
|
1342
|
+
required_executable: 'pub'
|
1343
|
+
flags: ['run', 'test']
|
1344
|
+
|
1325
1345
|
Pytest:
|
1326
1346
|
enabled: false
|
1327
1347
|
description: 'Run pytest test suite'
|
data/lib/overcommit/cli.rb
CHANGED
@@ -6,7 +6,7 @@ require 'optparse'
|
|
6
6
|
module Overcommit
|
7
7
|
# Responsible for parsing command-line options and executing appropriate
|
8
8
|
# application logic based on those options.
|
9
|
-
class CLI # rubocop:disable ClassLength
|
9
|
+
class CLI # rubocop:disable Metrics/ClassLength
|
10
10
|
def initialize(arguments, input, logger)
|
11
11
|
@arguments = arguments
|
12
12
|
@input = input
|
@@ -29,11 +29,11 @@ module Overcommit
|
|
29
29
|
when :run_all
|
30
30
|
run_all
|
31
31
|
end
|
32
|
-
rescue Overcommit::Exceptions::ConfigurationSignatureChanged =>
|
33
|
-
puts
|
32
|
+
rescue Overcommit::Exceptions::ConfigurationSignatureChanged => e
|
33
|
+
puts e
|
34
34
|
exit 78 # EX_CONFIG
|
35
|
-
rescue Overcommit::Exceptions::HookContextLoadError =>
|
36
|
-
puts
|
35
|
+
rescue Overcommit::Exceptions::HookContextLoadError => e
|
36
|
+
puts e
|
37
37
|
exit 64 # EX_USAGE
|
38
38
|
end
|
39
39
|
|
@@ -52,8 +52,8 @@ module Overcommit
|
|
52
52
|
|
53
53
|
# Unconsumed arguments are our targets
|
54
54
|
@options[:targets] = @arguments
|
55
|
-
rescue OptionParser::InvalidOption =>
|
56
|
-
print_help @parser.help,
|
55
|
+
rescue OptionParser::InvalidOption => e
|
56
|
+
print_help @parser.help, e
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
@@ -94,8 +94,9 @@ module Overcommit
|
|
94
94
|
@options[:force] = true
|
95
95
|
end
|
96
96
|
|
97
|
-
opts.on('-r', '--run', 'Run
|
97
|
+
opts.on('-r [hook]', '--run [hook]', 'Run specified hook against all git tracked files. Defaults to `pre_commit`.') do |arg| # rubocop:disable Layout/LineLength
|
98
98
|
@options[:action] = :run_all
|
99
|
+
@options[:hook_to_run] = arg ? arg.to_s : 'run-all'
|
99
100
|
end
|
100
101
|
end
|
101
102
|
|
@@ -125,11 +126,11 @@ module Overcommit
|
|
125
126
|
@options[:targets].each do |target|
|
126
127
|
begin
|
127
128
|
Installer.new(log).run(target, @options)
|
128
|
-
rescue Overcommit::Exceptions::InvalidGitRepo =>
|
129
|
-
log.warning "Invalid repo #{target}: #{
|
129
|
+
rescue Overcommit::Exceptions::InvalidGitRepo => e
|
130
|
+
log.warning "Invalid repo #{target}: #{e}"
|
130
131
|
halt 69 # EX_UNAVAILABLE
|
131
|
-
rescue Overcommit::Exceptions::PreExistingHooks =>
|
132
|
-
log.warning "Unable to install into #{target}: #{
|
132
|
+
rescue Overcommit::Exceptions::PreExistingHooks => e
|
133
|
+
log.warning "Unable to install into #{target}: #{e}"
|
133
134
|
halt 73 # EX_CANTCREAT
|
134
135
|
end
|
135
136
|
end
|
@@ -199,7 +200,7 @@ module Overcommit
|
|
199
200
|
|
200
201
|
def run_all
|
201
202
|
empty_stdin = File.open(File::NULL) # pre-commit hooks don't take input
|
202
|
-
context = Overcommit::HookContext.create(
|
203
|
+
context = Overcommit::HookContext.create(@options[:hook_to_run], config, @arguments, empty_stdin) # rubocop:disable Layout/LineLength
|
203
204
|
config.apply_environment!(context, ENV)
|
204
205
|
|
205
206
|
printer = Overcommit::Printer.new(config, log, context)
|
@@ -5,7 +5,7 @@ require 'json'
|
|
5
5
|
|
6
6
|
module Overcommit
|
7
7
|
# Stores configuration for Overcommit and the hooks it runs.
|
8
|
-
class Configuration # rubocop:disable ClassLength
|
8
|
+
class Configuration # rubocop:disable Metrics/ClassLength
|
9
9
|
# Creates a configuration from the given hash.
|
10
10
|
#
|
11
11
|
# @param hash [Hash] loaded YAML config file as a hash
|
@@ -24,13 +24,16 @@ module Overcommit
|
|
24
24
|
# @option logger [Overcommit::Logger]
|
25
25
|
# @return [Overcommit::Configuration]
|
26
26
|
def load_from_file(file, options = {})
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
27
|
+
# Psych 4 introduced breaking behavior that doesn't support aliases by
|
28
|
+
# default. Explicitly enable aliases if the option is available.
|
29
|
+
yaml =
|
30
|
+
begin
|
31
|
+
YAML.load_file(file, aliases: true)
|
32
|
+
rescue ArgumentError
|
33
|
+
YAML.load_file(file)
|
32
34
|
end
|
33
35
|
|
36
|
+
hash = yaml ? yaml.to_hash : {}
|
34
37
|
Overcommit::Configuration.new(hash, options)
|
35
38
|
end
|
36
39
|
end
|
@@ -72,10 +75,10 @@ module Overcommit
|
|
72
75
|
config
|
73
76
|
rescue Overcommit::Exceptions::ConfigurationSignatureChanged
|
74
77
|
raise
|
75
|
-
rescue StandardError =>
|
78
|
+
rescue StandardError => e
|
76
79
|
raise Overcommit::Exceptions::ConfigurationError,
|
77
|
-
"Unable to load configuration from '#{file}': #{
|
78
|
-
|
80
|
+
"Unable to load configuration from '#{file}': #{e}",
|
81
|
+
e.backtrace
|
79
82
|
end
|
80
83
|
|
81
84
|
private
|
data/lib/overcommit/git_repo.rb
CHANGED
@@ -14,7 +14,7 @@ module Overcommit
|
|
14
14
|
[^\s]+\s # Ignore old file range
|
15
15
|
\+(\d+)(?:,(\d+))? # Extract range of hunk containing start line and number of lines
|
16
16
|
\s@@.*$
|
17
|
-
/x
|
17
|
+
/x.freeze
|
18
18
|
|
19
19
|
# Regular expression used to extract information from lines of
|
20
20
|
# `git submodule status` output
|
@@ -22,7 +22,7 @@ module Overcommit
|
|
22
22
|
^\s*(?<prefix>[-+U]?)(?<sha1>\w+)
|
23
23
|
\s(?<path>[^\s]+?)
|
24
24
|
(?:\s\((?<describe>.+)\))?$
|
25
|
-
/x
|
25
|
+
/x.freeze
|
26
26
|
|
27
27
|
# Struct encapsulating submodule information extracted from the
|
28
28
|
# output of `git submodule status`
|
@@ -262,9 +262,9 @@ module Overcommit
|
|
262
262
|
end
|
263
263
|
|
264
264
|
modules
|
265
|
-
rescue IniParse::IniParseError =>
|
265
|
+
rescue IniParse::IniParseError => e
|
266
266
|
raise Overcommit::Exceptions::GitSubmoduleError,
|
267
|
-
"Unable to read submodule information from #{ref}:.gitmodules file: #{
|
267
|
+
"Unable to read submodule information from #{ref}:.gitmodules file: #{e.message}"
|
268
268
|
end
|
269
269
|
|
270
270
|
# Returns the names of all branches containing the given commit.
|
@@ -9,7 +9,7 @@ module Overcommit::Hook::CommitMsg
|
|
9
9
|
class SpellCheck < Base
|
10
10
|
Misspelling = Struct.new(:word, :suggestions)
|
11
11
|
|
12
|
-
MISSPELLING_REGEX = /^[&#]\s(?<word>\w+)(?:.+?:\s(?<suggestions>.*))
|
12
|
+
MISSPELLING_REGEX = /^[&#]\s(?<word>\w+)(?:.+?:\s(?<suggestions>.*))?/.freeze
|
13
13
|
|
14
14
|
def run
|
15
15
|
result = execute(command + [uncommented_commit_msg_file])
|
@@ -5,12 +5,13 @@ module Overcommit::Hook::PostCommit
|
|
5
5
|
#
|
6
6
|
# @see https://www.npmjs.com/package/git-guilt
|
7
7
|
class GitGuilt < Base
|
8
|
-
PLUS_MINUS_REGEX = /^(.*?)(?:(\++)|(-+))
|
8
|
+
PLUS_MINUS_REGEX = /^(.*?)(?:(\++)|(-+))$/.freeze
|
9
9
|
GREEN = 32
|
10
10
|
RED = 31
|
11
11
|
|
12
12
|
def run
|
13
13
|
return :pass if initial_commit?
|
14
|
+
|
14
15
|
result = execute(command)
|
15
16
|
return :fail, result.stderr unless result.success?
|
16
17
|
|
@@ -14,11 +14,11 @@ module Overcommit::Hook::PreCommit
|
|
14
14
|
next unless second
|
15
15
|
|
16
16
|
result = execute(
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
17
|
+
command,
|
18
|
+
args: [
|
19
|
+
"--first=#{first.join(' ')}",
|
20
|
+
"--second=#{second.join(' ')}",
|
21
|
+
],
|
22
22
|
)
|
23
23
|
|
24
24
|
unless result.stdout.empty?
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Overcommit::Hook::PreCommit
|
4
|
+
# Runs `dartanalyzer` against modified Dart files.
|
5
|
+
# @see https://dart.dev/tools/dartanalyzer
|
6
|
+
class DartAnalyzer < Base
|
7
|
+
MESSAGE_REGEX = /(?<type>.*)•\ (?<message>[^•]+)•\ (?<file>[^:]+):(?<line>\d+):(\d+)\.*/.freeze
|
8
|
+
|
9
|
+
def run
|
10
|
+
result = execute(command, args: applicable_files)
|
11
|
+
return :pass if result.success?
|
12
|
+
|
13
|
+
extract_messages(
|
14
|
+
result.stdout.split("\n").grep(MESSAGE_REGEX),
|
15
|
+
MESSAGE_REGEX,
|
16
|
+
lambda do |type|
|
17
|
+
type.include?('error') ? :error : :warning
|
18
|
+
end
|
19
|
+
)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -5,7 +5,7 @@ module Overcommit::Hook::PreCommit
|
|
5
5
|
#
|
6
6
|
# @see https://github.com/Shopify/erb-lint
|
7
7
|
class ErbLint < Base
|
8
|
-
MESSAGE_REGEX = /(?<message>.+)\nIn file: (?<file>.+):(?<line>\d+)
|
8
|
+
MESSAGE_REGEX = /(?<message>.+)\nIn file: (?<file>.+):(?<line>\d+)/.freeze
|
9
9
|
|
10
10
|
def run
|
11
11
|
result = execute(command, args: applicable_files)
|
@@ -19,20 +19,17 @@ module Overcommit::Hook::PreCommit
|
|
19
19
|
# @see http://eslint.org/
|
20
20
|
class EsLint < Base
|
21
21
|
def run
|
22
|
+
eslint_regex = /^(?<file>[^\s](?:\w:)?[^:]+):[^\d]+(?<line>\d+).*?(?<type>Error|Warning)/
|
22
23
|
result = execute(command, args: applicable_files)
|
23
24
|
output = result.stdout.chomp
|
24
|
-
messages = output.split("\n").grep(
|
25
|
+
messages = output.split("\n").grep(eslint_regex)
|
25
26
|
|
26
27
|
return [:fail, result.stderr] if messages.empty? && !result.success?
|
27
28
|
return :pass if result.success? && output.empty?
|
28
29
|
|
29
30
|
# example message:
|
30
31
|
# path/to/file.js: line 1, col 0, Error - Error message (ruleName)
|
31
|
-
extract_messages(
|
32
|
-
messages,
|
33
|
-
/^(?<file>(?:\w:)?[^:]+):[^\d]+(?<line>\d+).*?(?<type>Error|Warning)/,
|
34
|
-
lambda { |type| type.downcase.to_sym }
|
35
|
-
)
|
32
|
+
extract_messages(messages, eslint_regex, lambda { |type| type.downcase.to_sym })
|
36
33
|
end
|
37
34
|
end
|
38
35
|
end
|
@@ -102,7 +102,7 @@ module Overcommit::Hook::PreCommit
|
|
102
102
|
if result.success?
|
103
103
|
:pass
|
104
104
|
else
|
105
|
-
|
105
|
+
[:warn, result.stderr + result.stdout]
|
106
106
|
end
|
107
107
|
end
|
108
108
|
|
@@ -137,12 +137,14 @@ module Overcommit::Hook::PreCommit
|
|
137
137
|
|
138
138
|
def modified(type)
|
139
139
|
return [] if !config["#{type}_directory"] || config["#{type}_directory"].empty?
|
140
|
+
|
140
141
|
@modified ||= {}
|
141
142
|
@modified[type] ||= directories_changed(full_directory_path("#{type}_directory"))
|
142
143
|
end
|
143
144
|
|
144
145
|
def full_directory_path(config_option)
|
145
146
|
return config[config_option] if config[config_option].start_with?(File::SEPARATOR)
|
147
|
+
|
146
148
|
File.absolute_path(File.join(Overcommit::Utils.repo_root, config[config_option]))
|
147
149
|
end
|
148
150
|
end
|
@@ -5,7 +5,7 @@ module Overcommit::Hook::PreCommit
|
|
5
5
|
#
|
6
6
|
# @see http://checkstyle.sourceforge.net/
|
7
7
|
class JavaCheckstyle < Base
|
8
|
-
MESSAGE_REGEX = /^(\[(?<type>[^\]]+)\]\s+)?(?<file>(?:\w:)?[^:]+):(?<line>\d+)
|
8
|
+
MESSAGE_REGEX = /^(\[(?<type>[^\]]+)\]\s+)?(?<file>(?:\w:)?[^:]+):(?<line>\d+)/.freeze
|
9
9
|
|
10
10
|
MESSAGE_TYPE_CATEGORIZER = lambda do |type|
|
11
11
|
%w[WARN INFO].include?(type.to_s) ? :warning : :error
|
@@ -5,7 +5,7 @@ module Overcommit::Hook::PreCommit
|
|
5
5
|
#
|
6
6
|
# @see http://www.jslint.com/
|
7
7
|
class JsLint < Base
|
8
|
-
MESSAGE_REGEX = /(?<file>(?:\w:)?[^:]+):(?<line>\d+)
|
8
|
+
MESSAGE_REGEX = /(?<file>(?:\w:)?[^:]+):(?<line>\d+)/.freeze
|
9
9
|
|
10
10
|
def run
|
11
11
|
result = execute(command, args: applicable_files)
|
@@ -5,7 +5,7 @@ module Overcommit::Hook::PreCommit
|
|
5
5
|
#
|
6
6
|
# @see http://www.javascriptlint.com/
|
7
7
|
class Jsl < Base
|
8
|
-
MESSAGE_REGEX = /(?<file>(?:\w:)?.+)\((?<line>\d+)\):(?<type>[^:]+)
|
8
|
+
MESSAGE_REGEX = /(?<file>(?:\w:)?.+)\((?<line>\d+)\):(?<type>[^:]+)/.freeze
|
9
9
|
|
10
10
|
MESSAGE_TYPE_CATEGORIZER = lambda do |type|
|
11
11
|
type.match?(/warning/) ? :warning : :error
|
@@ -4,7 +4,7 @@ module Overcommit::Hook::PreCommit
|
|
4
4
|
# Runs `ktlint` against modified Kotlin files.
|
5
5
|
# @see https://github.com/shyiko/ktlint
|
6
6
|
class KtLint < Base
|
7
|
-
MESSAGE_REGEX = /((?<file>[^:]+):(?<line>\d+):(\d+):(?<message>.+))
|
7
|
+
MESSAGE_REGEX = /((?<file>[^:]+):(?<line>\d+):(\d+):(?<message>.+))/.freeze
|
8
8
|
|
9
9
|
def run
|
10
10
|
result = execute(command, args: applicable_files)
|
@@ -12,14 +12,14 @@ module Overcommit::Hook::PreCommit
|
|
12
12
|
file = File.open(file_name)
|
13
13
|
begin
|
14
14
|
messages += check_file(file, file_name)
|
15
|
-
rescue ArgumentError =>
|
15
|
+
rescue ArgumentError => e
|
16
16
|
# File is likely a binary file which this check should ignore, but
|
17
17
|
# print a warning just in case
|
18
18
|
messages << Overcommit::Hook::Message.new(
|
19
19
|
:warning,
|
20
20
|
file_name,
|
21
21
|
file.lineno,
|
22
|
-
"#{file_name}:#{file.lineno}:#{
|
22
|
+
"#{file_name}:#{file.lineno}:#{e.message}"
|
23
23
|
)
|
24
24
|
end
|
25
25
|
end
|
@@ -59,6 +59,7 @@ module Overcommit::Hook::PreCommit
|
|
59
59
|
i = info.split.first
|
60
60
|
next if i == 'l/-text' # ignore binary files
|
61
61
|
next if i == "l/#{eol}"
|
62
|
+
|
62
63
|
path
|
63
64
|
end.compact
|
64
65
|
end
|
@@ -5,7 +5,7 @@ module Overcommit::Hook::PreCommit
|
|
5
5
|
#
|
6
6
|
# @see https://www.nginx.com/resources/wiki/start/topics/tutorials/commandline/
|
7
7
|
class NginxTest < Base
|
8
|
-
MESSAGE_REGEX = /^nginx: .+ in (?<file>.+):(?<line>\d+)
|
8
|
+
MESSAGE_REGEX = /^nginx: .+ in (?<file>.+):(?<line>\d+)$/.freeze
|
9
9
|
|
10
10
|
def run
|
11
11
|
messages = []
|
@@ -4,7 +4,7 @@ module Overcommit::Hook::PreCommit
|
|
4
4
|
# Runs `phpcs` against any modified PHP files.
|
5
5
|
class PhpCs < Base
|
6
6
|
# Parse `phpcs` csv mode output
|
7
|
-
MESSAGE_REGEX = /^\"(?<file>.+)\",(?<line>\d+),\d+,(?<type>.+),\"(?<msg>.+)\"
|
7
|
+
MESSAGE_REGEX = /^\"(?<file>.+)\",(?<line>\d+),\d+,(?<type>.+),\"(?<msg>.+)\"/.freeze
|
8
8
|
MESSAGE_TYPE_CATEGORIZER = lambda do |type|
|
9
9
|
'error'.include?(type) ? :error : :warning
|
10
10
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module Overcommit::Hook::PreCommit
|
4
4
|
# Runs `php-cs-fixer` against any modified PHP files.
|
5
5
|
class PhpCsFixer < Base
|
6
|
-
MESSAGE_REGEX = /\s+\d+\)\s+(?<file>.*\.php)(?<violated_rules>\s+\(\w+(?:,\s+)?\))
|
6
|
+
MESSAGE_REGEX = /\s+\d+\)\s+(?<file>.*\.php)(?<violated_rules>\s+\(\w+(?:,\s+)?\))?/.freeze
|
7
7
|
|
8
8
|
def run
|
9
9
|
messages = []
|
@@ -4,10 +4,10 @@ module Overcommit::Hook::PreCommit
|
|
4
4
|
# Runs `php -l` against any modified PHP files.
|
5
5
|
class PhpLint < Base
|
6
6
|
# Sample String
|
7
|
-
# rubocop:disable
|
7
|
+
# rubocop:disable Layout/LineLength
|
8
8
|
# PHP Parse error: syntax error, unexpected 'require_once' (T_REQUIRE_ONCE) in site/sumo.php on line 12
|
9
|
-
# rubocop:enable
|
10
|
-
MESSAGE_REGEX = /^(?<type>.+)\:\s+(?<message>.+) in (?<file>.+) on line (?<line>\d+)
|
9
|
+
# rubocop:enable Layout/LineLength
|
10
|
+
MESSAGE_REGEX = /^(?<type>.+)\:\s+(?<message>.+) in (?<file>.+) on line (?<line>\d+)/.freeze
|
11
11
|
|
12
12
|
def run
|
13
13
|
# A list of error messages
|
@@ -8,7 +8,7 @@ module Overcommit::Hook::PreCommit
|
|
8
8
|
# https://github.com/phpstan/phpstan/issues/239
|
9
9
|
# https://gist.github.com/edmondscommerce/89695c9cd2584fefdf540fb1c528d2c2
|
10
10
|
class PhpStan < Base
|
11
|
-
MESSAGE_REGEX = /^(?<file>.+)\:(?<line>\d+)\:(?<message>.+)
|
11
|
+
MESSAGE_REGEX = /^(?<file>.+)\:(?<line>\d+)\:(?<message>.+)/.freeze
|
12
12
|
|
13
13
|
def run
|
14
14
|
messages = []
|
@@ -5,7 +5,7 @@ module Overcommit::Hook::PreCommit
|
|
5
5
|
#
|
6
6
|
# @see http://puppet-lint.com/
|
7
7
|
class PuppetLint < Base
|
8
|
-
MESSAGE_REGEX = /(?<file>(?:\w:)?.+):(?<line>\d+):\d+:(?<type>\w+)
|
8
|
+
MESSAGE_REGEX = /(?<file>(?:\w:)?.+):(?<line>\d+):\d+:(?<type>\w+)/.freeze
|
9
9
|
|
10
10
|
MESSAGE_TYPE_CATEGORIZER = lambda do |type|
|
11
11
|
type == 'ERROR' ? :error : :warning
|
@@ -8,7 +8,7 @@ module Overcommit::Hook::PreCommit
|
|
8
8
|
# @see https://voxpupuli.org/blog/2014/11/06/linting-metadata-json/
|
9
9
|
#
|
10
10
|
class PuppetMetadataJsonLint < Base
|
11
|
-
MESSAGE_REGEX = /\((?<type>.*)\)
|
11
|
+
MESSAGE_REGEX = /\((?<type>.*)\).*/.freeze
|
12
12
|
|
13
13
|
MESSAGE_TYPE_CATEGORIZER = lambda do |type|
|
14
14
|
type == 'WARN' ? :warning : :error
|
@@ -5,7 +5,7 @@ module Overcommit::Hook::PreCommit
|
|
5
5
|
#
|
6
6
|
# @see https://pypi.python.org/pypi/pyflakes
|
7
7
|
class Pyflakes < Base
|
8
|
-
MESSAGE_REGEX = /^(?<file>(?:\w:)?[^:]+):(?<line>\d+)
|
8
|
+
MESSAGE_REGEX = /^(?<file>(?:\w:)?[^:]+):(?<line>\d+):/.freeze
|
9
9
|
|
10
10
|
def run
|
11
11
|
result = execute(command, args: applicable_files)
|
@@ -5,7 +5,7 @@ module Overcommit::Hook::PreCommit
|
|
5
5
|
#
|
6
6
|
# @see http://www.pylint.org/
|
7
7
|
class Pylint < Base
|
8
|
-
MESSAGE_REGEX = /^(?<file>(?:\w:)?.+):(?<line>\d+):(?<type>[CEFRW])
|
8
|
+
MESSAGE_REGEX = /^(?<file>(?:\w:)?.+):(?<line>\d+):(?<type>[CEFRW])/.freeze
|
9
9
|
|
10
10
|
# Classify 'E' and 'F' message codes as errors,
|
11
11
|
# everything else as warnings.
|
@@ -5,7 +5,7 @@ module Overcommit::Hook::PreCommit
|
|
5
5
|
#
|
6
6
|
# @see https://pypi.python.org/pypi/flake8
|
7
7
|
class PythonFlake8 < Base
|
8
|
-
MESSAGE_REGEX = /^(?<file>(?:\w:)?.+):(?<line>\d+):\d+:\s(?<type>\w\d+)
|
8
|
+
MESSAGE_REGEX = /^(?<file>(?:\w:)?.+):(?<line>\d+):\d+:\s(?<type>\w\d+)/.freeze
|
9
9
|
|
10
10
|
# Classify 'Exxx' and 'Fxxx' message codes as errors,
|
11
11
|
# everything else as warnings.
|