overcommit 0.62.0 → 0.64.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b862ff3b0a2650cafbdbc91fac3cda5ee83292ee0057e0446c954c555870ca76
4
- data.tar.gz: 50924c1e042458f471c130d17b9b3504938b6a8246d170c7a9eedcf24ed14424
3
+ metadata.gz: d85e2036f46d697b370c4926beb8f858a92ebc106590724e02eadef769c532b9
4
+ data.tar.gz: bc5686ac420e3ecee206e8921ee02f103852fb918e9fcf84f1a9c9cb576debe9
5
5
  SHA512:
6
- metadata.gz: 872f9fb0720e7a5bebb76bf12faefcd7c8cd03927f1cf084d71115049edbe09ddc143d62f1c91548ea178ad9bd36a08685af3ea3bf552a6ab982cc5feac581e0
7
- data.tar.gz: 679b25b4f585a2031313798f422c6eb3ee07eff900dbb6d94a1d17f8bd62a474a1cde65a2acc51b310ae26dc55a0f0350b0e27a33029d5c7c64058b6b9ea62dd
6
+ metadata.gz: a112cadfb48618428bbe1763561fe080f9968b853a7132c7c382276dd94557c6ea1ee3ed28b4e8fafd6e000e80d4e385a6bc81de586ea829e66cf0754deae43f
7
+ data.tar.gz: 7a237d6149d73b60b72113eaf31bcad7d967d9b2c330a2229fb90d795caaaeebf94fac8113660dd0468c6062dfc957c1134fbfec18385c68f61858bebabf1852
data/config/default.yml CHANGED
@@ -709,6 +709,11 @@ PreCommit:
709
709
  install_command: 'pip install restructuredtext_lint'
710
710
  include: '**/*.rst'
711
711
 
712
+ RSpec:
713
+ enabled: false
714
+ description: 'Run tests with Rspec'
715
+ required_executable: 'rspec'
716
+
712
717
  RuboCop:
713
718
  enabled: false
714
719
  description: 'Analyze with RuboCop'
@@ -790,6 +795,14 @@ PreCommit:
790
795
  install_command: 'gem install slim_lint'
791
796
  include: '**/*.slim'
792
797
 
798
+ Sorbet:
799
+ enabled: false
800
+ description: 'Analyze with Sorbet'
801
+ required_executable: 'srb'
802
+ install_command: 'gem install sorbet'
803
+ command: ['srb', 'tc']
804
+ include: '**/*.rb'
805
+
793
806
  Sqlint:
794
807
  enabled: false
795
808
  description: 'Analyze with sqlint'
@@ -124,15 +124,13 @@ module Overcommit
124
124
  end
125
125
 
126
126
  @options[:targets].each do |target|
127
- begin
128
- Installer.new(log).run(target, @options)
129
- rescue Overcommit::Exceptions::InvalidGitRepo => e
130
- log.warning "Invalid repo #{target}: #{e}"
131
- halt 69 # EX_UNAVAILABLE
132
- rescue Overcommit::Exceptions::PreExistingHooks => e
133
- log.warning "Unable to install into #{target}: #{e}"
134
- halt 73 # EX_CANTCREAT
135
- end
127
+ Installer.new(log).run(target, @options)
128
+ rescue Overcommit::Exceptions::InvalidGitRepo => e
129
+ log.warning "Invalid repo #{target}: #{e}"
130
+ halt 69 # EX_UNAVAILABLE
131
+ rescue Overcommit::Exceptions::PreExistingHooks => e
132
+ log.warning "Unable to install into #{target}: #{e}"
133
+ halt 73 # EX_CANTCREAT
136
134
  end
137
135
  end
138
136
 
@@ -228,14 +228,12 @@ module Overcommit::Hook
228
228
  output = []
229
229
 
230
230
  required_libraries.each do |library|
231
- begin
232
- require library
233
- rescue LoadError
234
- install_command = @config['install_command']
235
- install_command = " -- install via #{install_command}" if install_command
236
-
237
- output << "Unable to load '#{library}'#{install_command}"
238
- end
231
+ require library
232
+ rescue LoadError
233
+ install_command = @config['install_command']
234
+ install_command = " -- install via #{install_command}" if install_command
235
+
236
+ output << "Unable to load '#{library}'#{install_command}"
239
237
  end
240
238
 
241
239
  return if output.empty?
@@ -41,7 +41,7 @@ module Overcommit::Hook::CommitMsg
41
41
 
42
42
  max_body_width = config['max_body_width']
43
43
 
44
- lines[2..-1].each_with_index do |line, index|
44
+ lines[2..].each_with_index do |line, index|
45
45
  if line.chomp.size > max_body_width
46
46
  @errors << "Line #{index + 3} of commit message has > " \
47
47
  "#{max_body_width} characters"
@@ -12,7 +12,7 @@ module Overcommit::Hook::PreCommit
12
12
  return :pass if result.success?
13
13
 
14
14
  extract_messages(
15
- result.stdout.split("\n\n")[1..-1],
15
+ result.stdout.split("\n\n")[1..],
16
16
  MESSAGE_REGEX
17
17
  )
18
18
  end
@@ -14,7 +14,7 @@ module Overcommit::Hook::PreCommit
14
14
  lines = group.split("\n").map(&:strip)
15
15
  file = lines[0][/(.+):/, 1]
16
16
  extract_messages(
17
- lines[1..-1].map { |msg| "#{file}: #{msg}" },
17
+ lines[1..].map { |msg| "#{file}: #{msg}" },
18
18
  /^(?<file>(?:\w:)?[^:]+): line (?<line>\d+)/
19
19
  )
20
20
  end.flatten
@@ -7,12 +7,10 @@ module Overcommit::Hook::PreCommit
7
7
  messages = []
8
8
 
9
9
  applicable_files.each do |file|
10
- begin
11
- JSON.parse(IO.read(file))
12
- rescue JSON::ParserError => e
13
- error = "#{e.message} parsing #{file}"
14
- messages << Overcommit::Hook::Message.new(:error, file, nil, error)
15
- end
10
+ JSON.parse(IO.read(file))
11
+ rescue JSON::ParserError => e
12
+ error = "#{e.message} parsing #{file}"
13
+ messages << Overcommit::Hook::Message.new(:error, file, nil, error)
16
14
  end
17
15
 
18
16
  messages
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'overcommit/hook/shared/r_spec'
4
+
5
+ module Overcommit::Hook::PreCommit
6
+ # Runs `rspec` test suite
7
+ #
8
+ # @see http://rspec.info/
9
+ class RSpec < Base
10
+ include Overcommit::Hook::Shared::RSpec
11
+ end
12
+ end
@@ -53,7 +53,7 @@ module Overcommit::Hook::PreCommit
53
53
  end
54
54
 
55
55
  def schema
56
- @schema ||= schema_files.map { |file| File.read(file, encoding) }.join
56
+ @schema ||= schema_files.map { |file| File.read(file, **(encoding || {})) }.join
57
57
  @schema.tr('_', '')
58
58
  end
59
59
 
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overcommit::Hook::PreCommit
4
+ # Runs 'srb tc' against any modified files.
5
+ #
6
+ # @see https://github.com/sorbet/sorbet
7
+ class Sorbet < Base
8
+ # example of output:
9
+ # sorbet.rb:1: Method `foo` does not exist on `T.class_of(Bar)` https://srb.help/7003
10
+ MESSAGE_REGEX = /^(?<file>[^:]+):(?<line>\d+): (?<message>.*)$/.freeze
11
+
12
+ def run
13
+ result = execute(command, args: applicable_files)
14
+ return :pass if result.success?
15
+
16
+ output = result.stderr.split("\n").grep(MESSAGE_REGEX)
17
+
18
+ extract_messages(
19
+ output,
20
+ MESSAGE_REGEX
21
+ )
22
+ end
23
+ end
24
+ end
@@ -12,7 +12,7 @@ module Overcommit::Hook::PreCommit
12
12
 
13
13
  def run
14
14
  result = execute(command, args: applicable_files)
15
- output = result.stdout.chomp
15
+ output = result.stdout + result.stderr.chomp
16
16
  return :pass if result.success? && output.empty?
17
17
 
18
18
  extract_messages(
@@ -7,12 +7,10 @@ module Overcommit::Hook::PreCommit
7
7
  messages = []
8
8
 
9
9
  applicable_files.each do |file|
10
- begin
11
- REXML::Document.new(IO.read(file))
12
- rescue REXML::ParseException => e
13
- error = "Error parsing #{file}: #{e.message}"
14
- messages << Overcommit::Hook::Message.new(:error, file, nil, error)
15
- end
10
+ REXML::Document.new(IO.read(file))
11
+ rescue REXML::ParseException => e
12
+ error = "Error parsing #{file}: #{e.message}"
13
+ messages << Overcommit::Hook::Message.new(:error, file, nil, error)
16
14
  end
17
15
 
18
16
  messages
@@ -7,17 +7,15 @@ module Overcommit::Hook::PreCommit
7
7
  messages = []
8
8
 
9
9
  applicable_files.each do |file|
10
+ YAML.load_file(file, aliases: true)
11
+ rescue ArgumentError
10
12
  begin
11
- YAML.load_file(file, aliases: true)
12
- rescue ArgumentError
13
- begin
14
- YAML.load_file(file)
15
- rescue ArgumentError, Psych::SyntaxError => e
16
- messages << Overcommit::Hook::Message.new(:error, file, nil, e.message)
17
- end
18
- rescue Psych::DisallowedClass => e
19
- messages << error_message(file, e)
13
+ YAML.load_file(file)
14
+ rescue ArgumentError, Psych::SyntaxError => e
15
+ messages << Overcommit::Hook::Message.new(:error, file, nil, e.message)
20
16
  end
17
+ rescue Psych::DisallowedClass => e
18
+ messages << error_message(file, e)
21
19
  end
22
20
 
23
21
  messages
@@ -1,16 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'overcommit/hook/shared/r_spec'
4
+
3
5
  module Overcommit::Hook::PrePush
4
- # Runs `rspec` test suite before push
6
+ # Runs `rspec` test suite
5
7
  #
6
8
  # @see http://rspec.info/
7
9
  class RSpec < 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
10
+ include Overcommit::Hook::Shared::RSpec
15
11
  end
16
12
  end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overcommit::Hook::Shared
4
+ # Runs `rspec` test suite before push
5
+ #
6
+ # @see http://rspec.info/
7
+ module RSpec
8
+ def run
9
+ result = if @config['include']
10
+ execute(command, args: applicable_files)
11
+ else
12
+ execute(command)
13
+ end
14
+
15
+ return :pass if result.success?
16
+
17
+ output = result.stdout + result.stderr
18
+ [:fail, output]
19
+ end
20
+ end
21
+ end
@@ -26,7 +26,7 @@ module Overcommit::Utils
26
26
  raise Overcommit::Exceptions::MessageProcessingError,
27
27
  'Unexpected output: unable to determine line number or type ' \
28
28
  "of error/warning for output:\n" \
29
- "#{output_messages[index..-1].join("\n")}"
29
+ "#{output_messages[index..].join("\n")}"
30
30
  end
31
31
 
32
32
  file = extract_file(match, message)
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Defines the gem version.
4
4
  module Overcommit
5
- VERSION = '0.62.0'
5
+ VERSION = '0.64.0'
6
6
  end
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.62.0
4
+ version: 0.64.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shane da Silva
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-16 00:00:00.000000000 Z
11
+ date: 2024-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: childprocess
@@ -195,6 +195,7 @@ files:
195
195
  - lib/overcommit/hook/pre_commit/pyflakes.rb
196
196
  - lib/overcommit/hook/pre_commit/pylint.rb
197
197
  - lib/overcommit/hook/pre_commit/python_flake8.rb
198
+ - lib/overcommit/hook/pre_commit/r_spec.rb
198
199
  - lib/overcommit/hook/pre_commit/rails_best_practices.rb
199
200
  - lib/overcommit/hook/pre_commit/rails_schema_up_to_date.rb
200
201
  - lib/overcommit/hook/pre_commit/rake_target.rb
@@ -209,6 +210,7 @@ files:
209
210
  - lib/overcommit/hook/pre_commit/semi_standard.rb
210
211
  - lib/overcommit/hook/pre_commit/shell_check.rb
211
212
  - lib/overcommit/hook/pre_commit/slim_lint.rb
213
+ - lib/overcommit/hook/pre_commit/sorbet.rb
212
214
  - lib/overcommit/hook/pre_commit/sqlint.rb
213
215
  - lib/overcommit/hook/pre_commit/standard.rb
214
216
  - lib/overcommit/hook/pre_commit/stylelint.rb
@@ -253,6 +255,7 @@ files:
253
255
  - lib/overcommit/hook/shared/index_tags.rb
254
256
  - lib/overcommit/hook/shared/npm_install.rb
255
257
  - lib/overcommit/hook/shared/pronto.rb
258
+ - lib/overcommit/hook/shared/r_spec.rb
256
259
  - lib/overcommit/hook/shared/rake_target.rb
257
260
  - lib/overcommit/hook/shared/submodule_status.rb
258
261
  - lib/overcommit/hook/shared/yarn_install.rb
@@ -301,7 +304,8 @@ files:
301
304
  homepage: https://github.com/sds/overcommit
302
305
  licenses:
303
306
  - MIT
304
- metadata: {}
307
+ metadata:
308
+ changelog_uri: https://github.com/sds/overcommit/blob/main/CHANGELOG.md
305
309
  post_install_message: Install hooks by running `overcommit --install` in your Git
306
310
  repository
307
311
  rdoc_options: []
@@ -311,14 +315,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
311
315
  requirements:
312
316
  - - ">="
313
317
  - !ruby/object:Gem::Version
314
- version: '2.4'
318
+ version: '2.6'
315
319
  required_rubygems_version: !ruby/object:Gem::Requirement
316
320
  requirements:
317
321
  - - ">="
318
322
  - !ruby/object:Gem::Version
319
323
  version: '0'
320
324
  requirements: []
321
- rubygems_version: 3.4.10
325
+ rubygems_version: 3.5.9
322
326
  signing_key:
323
327
  specification_version: 4
324
328
  summary: Git hook manager