overcommit 0.58.0 → 0.59.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 +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)
|