overcommit 0.58.0 → 0.59.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 -5
- data/config/default.yml +1 -1
- 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 +3 -3
- 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 +1 -1
- data/lib/overcommit/hook/pre_commit/erb_lint.rb +1 -1
- 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 +1 -1
- 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/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 +3 -0
- 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 +24 -2
- data/lib/overcommit/utils/messages_utils.rb +1 -0
- data/lib/overcommit/version.rb +1 -1
- 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 +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 61c2ae9a910dd7a508c79a08564313b751646bb5bcdfdd1776b8eb5d58836f98
|
4
|
+
data.tar.gz: c3c3d555ee1919b68a5fba95f7e0b8a614c97459e71be94501fd822f94cc75e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3558b41b1158d11ee7d152119bfbd76cb3b205f4221f379d009e9e823c343cd56ceb109d04af2a464e4f4713d577fd1223572fdb8ddacd8641014f99cfa1dfa0
|
7
|
+
data.tar.gz: 110d94b41040610061815119882b0ec4ddf67ebe218a410de3d91c3bf6a47a2f5f689828b5a1d477f5b4b2cd3f70f2057c49f6674afaf6c2d0cbedf6bae4bdc1
|
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
@@ -703,7 +703,7 @@ PreCommit:
|
|
703
703
|
enabled: false
|
704
704
|
description: 'Analyze with RuboCop'
|
705
705
|
required_executable: 'rubocop'
|
706
|
-
flags: ['--format=emacs', '--force-exclusion', '--display-cop-names']
|
706
|
+
flags: ['--format=emacs', '--force-exclusion', '--display-cop-names', '--disable-pending-cops']
|
707
707
|
install_command: 'gem install rubocop'
|
708
708
|
include:
|
709
709
|
- '**/*.gemspec'
|
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
|
@@ -75,10 +75,10 @@ module Overcommit
|
|
75
75
|
config
|
76
76
|
rescue Overcommit::Exceptions::ConfigurationSignatureChanged
|
77
77
|
raise
|
78
|
-
rescue StandardError =>
|
78
|
+
rescue StandardError => e
|
79
79
|
raise Overcommit::Exceptions::ConfigurationError,
|
80
|
-
"Unable to load configuration from '#{file}': #{
|
81
|
-
|
80
|
+
"Unable to load configuration from '#{file}': #{e}",
|
81
|
+
e.backtrace
|
82
82
|
end
|
83
83
|
|
84
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?
|
@@ -4,7 +4,7 @@ module Overcommit::Hook::PreCommit
|
|
4
4
|
# Runs `dartanalyzer` against modified Dart files.
|
5
5
|
# @see https://dart.dev/tools/dartanalyzer
|
6
6
|
class DartAnalyzer < Base
|
7
|
-
MESSAGE_REGEX = /(?<type>.*)•\ (?<message>[^•]+)•\ (?<file>[^:]+):(?<line>\d+):(\d+)
|
7
|
+
MESSAGE_REGEX = /(?<type>.*)•\ (?<message>[^•]+)•\ (?<file>[^:]+):(?<line>\d+):(\d+)\.*/.freeze
|
8
8
|
|
9
9
|
def run
|
10
10
|
result = execute(command, args: applicable_files)
|
@@ -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)
|
@@ -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.
|
@@ -7,7 +7,7 @@ module Overcommit
|
|
7
7
|
#
|
8
8
|
# @see https://github.com/railsbp/rails_best_practices
|
9
9
|
class RailsBestPractices < Base
|
10
|
-
ERROR_REGEXP = /^(?<file>(?:\w:)?[^:]+):(?<line>\d+)\s-\s(?<type>.+)
|
10
|
+
ERROR_REGEXP = /^(?<file>(?:\w:)?[^:]+):(?<line>\d+)\s-\s(?<type>.+)/.freeze
|
11
11
|
|
12
12
|
def run
|
13
13
|
result = execute(command, args: applicable_files)
|
@@ -6,7 +6,7 @@ module Overcommit::Hook::PreCommit
|
|
6
6
|
# failure. The exception is if the schema is at version 0 (i.e before any
|
7
7
|
# migrations have been run). In this case it is OK if there are no migrations.
|
8
8
|
class RailsSchemaUpToDate < Base
|
9
|
-
def run # rubocop:disable CyclomaticComplexity, PerceivedComplexity
|
9
|
+
def run # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
10
10
|
if migration_files.any? && schema_files.none?
|
11
11
|
return :fail, "It looks like you're adding a migration, but did not update the schema file"
|
12
12
|
elsif migration_files.none? && schema_files.any? && non_zero_schema_version?
|
@@ -18,7 +18,7 @@ module Overcommit::Hook::PreCommit
|
|
18
18
|
# their username.
|
19
19
|
latest_version = migration_files.map do |file|
|
20
20
|
File.basename(file)[/\d+/]
|
21
|
-
end.
|
21
|
+
end.max
|
22
22
|
|
23
23
|
up_to_date = schema.include?(latest_version)
|
24
24
|
|
@@ -5,7 +5,7 @@ module Overcommit::Hook::PreCommit
|
|
5
5
|
#
|
6
6
|
# @see https://github.com/mdr/scalariform
|
7
7
|
class Scalariform < Base
|
8
|
-
MESSAGE_REGEX = /^\[(?<type>FAILED|ERROR)\]\s+(?<file>(?:\w:)?.+)
|
8
|
+
MESSAGE_REGEX = /^\[(?<type>FAILED|ERROR)\]\s+(?<file>(?:\w:)?.+)/.freeze
|
9
9
|
|
10
10
|
def run
|
11
11
|
result = execute(command, args: applicable_files)
|
@@ -18,9 +18,9 @@ module Overcommit::Hook::PreCommit
|
|
18
18
|
|
19
19
|
begin
|
20
20
|
collect_lint_messages(JSON.parse(result.stdout))
|
21
|
-
rescue JSON::ParserError =>
|
22
|
-
|
23
|
-
"STDOUT: #{result.stdout}\nSTDERR: #{result.stderr}"
|
21
|
+
rescue JSON::ParserError => e
|
22
|
+
[:fail, "Unable to parse JSON returned by SCSS-Lint: #{e.message}\n" \
|
23
|
+
"STDOUT: #{result.stdout}\nSTDERR: #{result.stderr}"]
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
@@ -5,7 +5,7 @@ module Overcommit::Hook::PreCommit
|
|
5
5
|
#
|
6
6
|
# @see https://github.com/Flet/semistandard
|
7
7
|
class SemiStandard < Base
|
8
|
-
MESSAGE_REGEX = /^\s*(?<file>(?:\w:)?[^:]+):(?<line>\d+)
|
8
|
+
MESSAGE_REGEX = /^\s*(?<file>(?:\w:)?[^:]+):(?<line>\d+)/.freeze
|
9
9
|
|
10
10
|
def run
|
11
11
|
result = execute(command, args: applicable_files)
|