overcommit 0.60.0 → 0.63.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: f9628c356de69c116c7a315732abfe802f91578cbcf2665c450ec7bfeddfd297
4
- data.tar.gz: b0f5f78774b47295f7200ea994a1dfa9d05eb9155d57f31a2f95ee7a60ed6d1f
3
+ metadata.gz: 5e9a2e23f1b830d2d9e8e500024cd01a1d368678b1f24039367ae88c90dc154a
4
+ data.tar.gz: 9c3fada758490c58d2341125315a988fe73fb9d4dc31c5167a400eddbff28846
5
5
  SHA512:
6
- metadata.gz: 9b6a07c9a752bb5ce51f432b51c43f4f225ba2891806ca1deb1ac8e77134ad4ebfa26dbb5050393f9d4529fc1a9df18fee84f4c59dc418a534002dd817bae90e
7
- data.tar.gz: 24b3f6be4e83a9e7167d7f66d5d2179be00777aa5209bfce778fc33b297a57ad045164421a9d46f8c66ffb6c2274af556dcbd87d0b2fecfe3000024c23eeb673
6
+ metadata.gz: 2773a91d43bf69aa97c9f65fab59934502c2b948ad5264a7dd0def628d6d9bb21b78ebfd868b3a5e0c9457f609ede41fa11fdd1e92708dc27bb87fc433361b91
7
+ data.tar.gz: 79e8e222951cbaea5875fbd2bab3268d47ead4dde32fad029e76b46bd4823546d8beee1473b42df1575879c64a7ae7bdc7e8da2e970f4ec6766b5b85163409dc
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
 
@@ -70,11 +70,9 @@ module Overcommit
70
70
  # Loads a configuration, ensuring it extends the default configuration.
71
71
  def load_file(file, local_file = nil)
72
72
  overcommit_config = self.class.load_from_file(file, default: false, logger: @log)
73
- if local_file
74
- local_config = self.class.load_from_file(local_file, default: false, logger: @log)
75
- end
73
+ l_config = self.class.load_from_file(local_file, default: false, logger: @log) if local_file
76
74
  config = self.class.default_configuration.merge(overcommit_config)
77
- config = self.class.default_configuration.merge(local_config) if local_config
75
+ config = config.merge(l_config) if l_config
78
76
 
79
77
  if @options.fetch(:verify) { config.verify_signatures? }
80
78
  verify_signatures(config)
@@ -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
@@ -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
@@ -85,7 +85,7 @@ module Overcommit::Hook::PrepareCommitMsg
85
85
  end
86
86
 
87
87
  def skip?
88
- skipped_commit_types.include?(commit_message_source)
88
+ super || skipped_commit_types.include?(commit_message_source)
89
89
  end
90
90
  end
91
91
  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.60.0'
5
+ VERSION = '0.63.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.60.0
4
+ version: 0.63.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: 2023-01-20 00:00:00.000000000 Z
11
+ date: 2024-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: childprocess
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: 0.6.3
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '5'
22
+ version: '6'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: 0.6.3
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '5'
32
+ version: '6'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: iniparse
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -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
@@ -311,15 +314,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
311
314
  requirements:
312
315
  - - ">="
313
316
  - !ruby/object:Gem::Version
314
- version: '2.4'
317
+ version: '2.6'
315
318
  required_rubygems_version: !ruby/object:Gem::Requirement
316
319
  requirements:
317
320
  - - ">="
318
321
  - !ruby/object:Gem::Version
319
322
  version: '0'
320
323
  requirements: []
321
- rubygems_version: 3.1.6
322
- signing_key:
324
+ rubygems_version: 3.4.10
325
+ signing_key:
323
326
  specification_version: 4
324
327
  summary: Git hook manager
325
328
  test_files: []