overcommit 0.57.0 → 0.58.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b5c35b43073b67da5cd0f8218c5ffd914b0601f1aac6d5ac9263ec3945893259
4
- data.tar.gz: 9c08bf2a7153993c48e3d15f30dee2c846edbb5f8500f89a41e027ec80ffb767
3
+ metadata.gz: b0d6feac2b1b10b983db054fa8931f302ff8eb8105c6d8788ad965ce986c990c
4
+ data.tar.gz: bf03cf18734e6139e5d7885ea1dcffb5d2aa0dcbad07ac8ec4d3cceff53d62e1
5
5
  SHA512:
6
- metadata.gz: 6cdcab7f4b31feed71b3f584f1e025a930d9b767e4e9acf00562ed57fac38442381454f57758bd967a657c9f966842f44212b53e2b482fe50613723590383d02
7
- data.tar.gz: 6d763e1d1eca286dd9c8861ee265bd8b3ed29e740d10d430e82c461ae64b313ef2057b11db654c0f694c21dcefcf187b8e7ea27bfbf1a16eba3d6f47776b4772
6
+ metadata.gz: 915b83736de391fe61565da7bd5caca5bf427cca3bf8f6f6aa4d6a639bf151e55d3fc61578b06eab6ffda215abe8e77e209b34d95a0ad4f6988b66fea4773a67
7
+ data.tar.gz: 445041c3c00b3d5cfa34c65aae868459f515c24ed4bc40017dd6bfdb91a3a6060c305a24eb03537a3ab0be401241f480fe12c42f3b70cf8fb6835f2d65f8dc6c
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'
@@ -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
- hash =
28
- if yaml = YAML.load_file(file)
29
- yaml.to_hash
30
- else
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
@@ -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+)\.*/
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
@@ -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(/Warning|Error/)
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
@@ -5,13 +5,34 @@ module Overcommit::Hook::PreCommit
5
5
  #
6
6
  # @see https://github.com/adrienverge/yamllint
7
7
  class YamlLint < Base
8
+ MESSAGE_REGEX = /
9
+ ^(?<file>.+)
10
+ :(?<line>\d+)
11
+ :(?<col>\d+)
12
+ :\s\[(?<type>\w+)\]
13
+ \s(?<msg>.+)$
14
+ /x
15
+
8
16
  def run
9
17
  result = execute(command, args: applicable_files)
18
+ parse_messages(result.stdout)
19
+ end
20
+
21
+ private
22
+
23
+ def parse_messages(output)
24
+ repo_root = Overcommit::Utils.repo_root
25
+
26
+ output.scan(MESSAGE_REGEX).map do |file, line, col, type, msg|
27
+ line = line.to_i
28
+ type = type.to_sym
29
+ # Obtain the path relative to the root of the repository
30
+ # for nicer output:
31
+ relpath = file.dup
32
+ relpath.slice!("#{repo_root}/")
10
33
 
11
- if result.success?
12
- :pass
13
- else
14
- return [:warn, result.stdout]
34
+ text = "#{relpath}:#{line}:#{col}:#{type} #{msg}"
35
+ Overcommit::Hook::Message.new(type, file, line, text)
15
36
  end
16
37
  end
17
38
  end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overcommit::Hook::PrePush
4
+ # Runs Flutter test suite (`flutter test`) before push
5
+ #
6
+ # @see https://api.flutter.dev/flutter/flutter_test/flutter_test-library.html
7
+ class FlutterTest < Base
8
+ def run
9
+ result = execute(command)
10
+ return :pass if result.success?
11
+
12
+ output = result.stdout + result.stderr
13
+ [:fail, output]
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overcommit::Hook::PrePush
4
+ # Runs Dart test suite (`pub run test`) before push
5
+ #
6
+ # @see https://pub.dev/packages/test#running-tests
7
+ class PubTest < Base
8
+ def run
9
+ result = execute(command)
10
+ return :pass if result.success?
11
+
12
+ output = result.stdout + result.stderr
13
+ [:fail, output]
14
+ end
15
+ end
16
+ end
@@ -129,7 +129,7 @@ module Overcommit::HookContext
129
129
 
130
130
  # Applies the stash to the working tree to restore the user's state.
131
131
  def restore_working_tree
132
- result = Overcommit::Utils.execute(%w[git stash pop --index --quiet])
132
+ result = Overcommit::Utils.execute(%w[git stash pop --index])
133
133
  unless result.success?
134
134
  raise Overcommit::Exceptions::HookCleanupFailed,
135
135
  "Unable to restore working tree after #{hook_script_name} hooks run:" \
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Defines the gem version.
4
4
  module Overcommit
5
- VERSION = '0.57.0'
5
+ VERSION = '0.58.0'
6
6
  end
data/libexec/index-tags CHANGED
@@ -6,10 +6,12 @@
6
6
 
7
7
  set -e
8
8
 
9
- trap "rm -f $GIT_DIR/tags.$$" EXIT
10
- err_file=$GIT_DIR/ctags.err
11
- if ctags --tag-relative -Rf$GIT_DIR/tags.$$ --exclude=.git "$@" 2>${err_file}; then
12
- mv $GIT_DIR/tags.$$ $GIT_DIR/tags
9
+ dir="`git rev-parse --git-dir`"
10
+
11
+ trap "rm -f $dir/tags.$$" EXIT
12
+ err_file=$dir/ctags.err
13
+ if ctags --tag-relative -Rf$dir/tags.$$ --exclude=.git "$@" 2>${err_file}; then
14
+ mv $dir/tags.$$ $dir/tags
13
15
  [ -e ${err_file} ] && rm -f ${err_file}
14
16
  else
15
17
  # Ignore STDERR unless `ctags` returned a non-zero exit code
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: overcommit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.57.0
4
+ version: 0.58.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shane da Silva
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-03 00:00:00.000000000 Z
11
+ date: 2021-05-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: childprocess
@@ -44,6 +44,20 @@ dependencies:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
46
  version: '1.4'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rexml
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '3.2'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '3.2'
47
61
  description: Utility to install, configure, and extend Git hooks
48
62
  email:
49
63
  - shane@dasilva.io
@@ -129,6 +143,7 @@ files:
129
143
  - lib/overcommit/hook/pre_commit/cook_style.rb
130
144
  - lib/overcommit/hook/pre_commit/credo.rb
131
145
  - lib/overcommit/hook/pre_commit/css_lint.rb
146
+ - lib/overcommit/hook/pre_commit/dart_analyzer.rb
132
147
  - lib/overcommit/hook/pre_commit/dogma.rb
133
148
  - lib/overcommit/hook/pre_commit/erb_lint.rb
134
149
  - lib/overcommit/hook/pre_commit/es_lint.rb
@@ -213,12 +228,14 @@ files:
213
228
  - lib/overcommit/hook/pre_push/base.rb
214
229
  - lib/overcommit/hook/pre_push/brakeman.rb
215
230
  - lib/overcommit/hook/pre_push/cargo_test.rb
231
+ - lib/overcommit/hook/pre_push/flutter_test.rb
216
232
  - lib/overcommit/hook/pre_push/go_test.rb
217
233
  - lib/overcommit/hook/pre_push/golangci_lint.rb
218
234
  - lib/overcommit/hook/pre_push/minitest.rb
219
235
  - lib/overcommit/hook/pre_push/php_unit.rb
220
236
  - lib/overcommit/hook/pre_push/pronto.rb
221
237
  - lib/overcommit/hook/pre_push/protected_branches.rb
238
+ - lib/overcommit/hook/pre_push/pub_test.rb
222
239
  - lib/overcommit/hook/pre_push/pytest.rb
223
240
  - lib/overcommit/hook/pre_push/python_nose.rb
224
241
  - lib/overcommit/hook/pre_push/r_spec.rb
@@ -299,8 +316,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
299
316
  - !ruby/object:Gem::Version
300
317
  version: '0'
301
318
  requirements: []
302
- rubygems_version: 3.1.1
303
- signing_key:
319
+ rubygems_version: 3.1.4
320
+ signing_key:
304
321
  specification_version: 4
305
322
  summary: Git hook manager
306
323
  test_files: []