nucop 0.11.0 → 0.11.2

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: ecf24df0b4caaa54faaafd445f3fd50ddc6f76afbd366be865c7403aaec6f713
4
- data.tar.gz: affe1a2f7f99ab79af551df47a760815bf362e39ab347e8844009f0c226b969e
3
+ metadata.gz: '081e762c1062a77de4d3944faf033a1c108d8eb08096f08973acd34fbde3fe31'
4
+ data.tar.gz: 50c823a5c9f7a75ddc3ce7f78051a7002d52713b23180a86d92af43ea0542716
5
5
  SHA512:
6
- metadata.gz: 165178469a3a827067cc38e2dfde35513e7d091e21c8846a4729706904ee67dc6d27fe064ae3ffa4d08efbbdb0d064528e04d57e8d04c1224b2e5de474e8b1ce
7
- data.tar.gz: '092f0e7d949b88eacd9703b8c134a059054702c05952ce01024a2f7c04f0b8020f0d40bdedbd8895bbaeda55d359d3bae0a5d546f821b29d123620282348e076'
6
+ metadata.gz: 4d9c1578e8a3019c286042b15fb7c8cd275e2a49ed924147e4e6df6140891c8acde2767bb1b1d7211326c104b19ed16f5a5e6f57a4febcfa446d92cc004084d5
7
+ data.tar.gz: 793a545e9c038b60b3bfad8bcc0ccd204d6a009acf75f0dcd88c75e162adfb813c24d123e20d7d1422d57a95f52ffabc5b8384b247a252aad2075534ebea77ab
data/lib/nucop/cli.rb CHANGED
@@ -15,6 +15,7 @@ module Nucop
15
15
  method_option "autocorrect-all", type: :boolean, default: false, desc: "runs RuboCop with autocorrect-all option"
16
16
  method_option "junit_report", type: :string, default: nil, desc: "runs RuboCop with junit formatter option"
17
17
  method_option "json", type: :string, default: nil, desc: "Output results as JSON format to the provided file"
18
+
18
19
  def diff_enforced
19
20
  invoke :diff, nil, options.merge(only: cops_to_enforce.join(","))
20
21
  end
@@ -27,6 +28,7 @@ module Nucop
27
28
  method_option "autocorrect-all", type: :boolean, default: false, desc: "runs RuboCop with autocorrect-all option"
28
29
  method_option "junit_report", type: :string, default: nil, desc: "runs RuboCop with junit formatter option"
29
30
  method_option "json", type: :string, default: nil, desc: "Output results as JSON format to the provided file"
31
+
30
32
  def diff_enforced_github
31
33
  invoke :diff_github, nil, options.merge(only: cops_to_enforce.join(","))
32
34
  end
@@ -40,6 +42,7 @@ module Nucop
40
42
  method_option "ignore", type: :boolean, default: true, desc: "ignores files specified in #{options[:diffignore_file]}"
41
43
  method_option "added-only", type: :boolean, default: false, desc: "runs RuboCop only on files that have been added (not on files that have been modified)"
42
44
  method_option "exit", type: :boolean, default: true, desc: "disable to prevent task from exiting. Used by other Thor tasks when invoking this task, to prevent parent task from exiting"
45
+
43
46
  def diff
44
47
  puts "Running on files changed relative to '#{options[:"commit-spec"]}' (specify using the 'commit-spec' option)"
45
48
  diff_filter = options[:"added-only"] ? "A" : "d"
@@ -88,6 +91,7 @@ module Nucop
88
91
  method_option "ignore", type: :boolean, default: true, desc: "ignores files specified in #{options[:diffignore_file]}"
89
92
  method_option "added-only", type: :boolean, default: false, desc: "runs RuboCop only on files that have been added (not on files that have been modified)"
90
93
  method_option "exit", type: :boolean, default: true, desc: "disable to prevent task from exiting. Used by other Thor tasks when invoking this task, to prevent parent task from exiting"
94
+
91
95
  def diff_github
92
96
  puts "Running on files changed relative to '#{options[:"commit-spec"]}' (specify using the 'commit-spec' option)"
93
97
  diff_head = capture_std_out("git rev-parse HEAD").chomp
@@ -155,14 +159,10 @@ module Nucop
155
159
  method_option "autocorrect", type: :boolean, default: false, desc: "runs RuboCop with autocorrect option"
156
160
  method_option "autocorrect-all", type: :boolean, default: false, desc: "runs RuboCop with autocorrect-all option"
157
161
  method_option "exclude-backlog", type: :boolean, default: false, desc: "when true, uses config which excludes violations in the RuboCop backlog"
162
+
158
163
  def rubocop(files = nil)
159
164
  print_cops_being_run(options[:only])
160
165
  config_file = options[:"exclude-backlog"] ? RUBOCOP_DEFAULT_CONFIG_FILE : options[:rubocop_todo_config_file]
161
- rubocop_requires = [
162
- "--require rubocop-rspec",
163
- "--require rubocop-performance",
164
- "--require rubocop-rails"
165
- ]
166
166
 
167
167
  formatters = []
168
168
  formatters << "--format Nucop::Formatters::JUnitFormatter --out #{options[:junit_report]}" if options[:junit_report]
@@ -173,7 +173,7 @@ module Nucop
173
173
  "bundle exec rubocop",
174
174
  "--no-server",
175
175
  "--parallel",
176
- rubocop_requires.join(" "),
176
+ rubocop_gem_requires.join(" "),
177
177
  formatters.join(" "),
178
178
  "--force-exclusion",
179
179
  "--config", config_file,
@@ -189,18 +189,21 @@ module Nucop
189
189
 
190
190
  desc "regen_backlog", "update the RuboCop backlog, disabling offending files and excluding all cops with over 500 violating files."
191
191
  method_option "exclude-limit", type: :numeric, default: 500, desc: "Limit files listed to this limit. Passed to RuboCop"
192
+
192
193
  def regen_backlog
193
194
  regenerate_rubocop_todos
194
195
  update_enforced_cops
195
196
  end
196
197
 
197
198
  desc "update_enforced", "update the enforced cops list with file with cops that no longer have violations"
199
+
198
200
  def update_enforced
199
201
  update_enforced_cops
200
202
  end
201
203
 
202
204
  desc "modified_lines", "display RuboCop violations for ONLY modified lines"
203
205
  method_option "commit-spec", default: "main", desc: "the commit used to determine the diff."
206
+
204
207
  def modified_lines
205
208
  diff_files, diff_status = Open3.capture2("git diff #{options[:"commit-spec"]} --diff-filter=d --name-only | grep \"\\.rb$\"")
206
209
 
@@ -220,6 +223,7 @@ module Nucop
220
223
 
221
224
  desc "ready_for_promotion", "display the next n cops with the fewest offenses"
222
225
  method_option "n", type: :numeric, default: 1, desc: "number of cops to display"
226
+
223
227
  def ready_for_promotion
224
228
  finder = Helpers::NextCopForPromotion.new(options[:rubocop_todo_file])
225
229
  todo_config = YAML.load_file(options[:rubocop_todo_file])
@@ -303,17 +307,10 @@ module Nucop
303
307
  rubocop_options = [
304
308
  "--auto-gen-config",
305
309
  "--config #{options[:rubocop_todo_config_file]}",
306
- "--exclude-limit #{options[:"exclude-limit"]}",
307
- "--require rubocop-graphql",
308
- "--require rubocop-performance",
309
- "--require rubocop-rails",
310
- "--require rubocop-rake",
311
- "--require rubocop-rspec",
312
- "--require rubocop-rubycw",
313
- "--require rubocop-thread_safety"
310
+ "--exclude-limit #{options[:"exclude-limit"]}"
314
311
  ]
315
312
 
316
- rubocop_command = "DISABLE_SPRING=1 bundle exec rubocop #{rubocop_options.join(' ')}"
313
+ rubocop_command = "DISABLE_SPRING=1 bundle exec rubocop #{rubocop_options.join(' ')} #{rubocop_gem_requires.join(' ')}"
317
314
 
318
315
  system(rubocop_command)
319
316
 
@@ -323,6 +320,10 @@ module Nucop
323
320
  system("git checkout #{options[:rubocop_todo_config_file]}")
324
321
  end
325
322
 
323
+ def rubocop_gem_requires
324
+ Nucop::Helpers::RubocopGemDependencies.rubocop_gems.map { |rubocop_gem| "--require #{rubocop_gem}" }
325
+ end
326
+
326
327
  def update_enforced_cops
327
328
  puts "Updating enforced cops list..."
328
329
 
@@ -346,7 +347,8 @@ module Nucop
346
347
  end
347
348
 
348
349
  def enabled_cops
349
- YAML.safe_load(`bundle exec rubocop --parallel --show-cops`, permitted_classes: [Regexp, Symbol])
350
+ YAML
351
+ .safe_load(`bundle exec rubocop --parallel --show-cops`, permitted_classes: [Regexp, Symbol])
350
352
  .select { |_, config| config["Enabled"] }
351
353
  .map(&:first)
352
354
  end
@@ -17,7 +17,7 @@ module Nucop
17
17
  # release_toggle_enabled?(:move_out_of_wip_autocomplete)
18
18
  #
19
19
  class ReleaseTogglesUseSymbols < ::RuboCop::Cop::Cop
20
- MSG = "Use a symbol when refering to a Release Toggle's by name".freeze
20
+ MSG = "Use a symbol when referring to a Release Toggle's by name".freeze
21
21
 
22
22
  def_node_matcher :test_helper?, <<~PATTERN
23
23
  (send nil? {:release_toggle_enabled? :release_toggle_enabled_for_any_site?} (str _))
@@ -5,7 +5,7 @@ module Nucop
5
5
  class JUnitFormatter < ::RuboCop::Formatter::BaseFormatter
6
6
  # This gives all cops - we really want all _enabled_ cops, but
7
7
  # that is difficult to obtain - no access to config object here.
8
- COPS = RuboCop::Cop::Cop.all
8
+ COPS = RuboCop::Cop::Registry.all
9
9
 
10
10
  def started(_target_file)
11
11
  @document = REXML::Document.new.tap do |d|
@@ -1,7 +1,7 @@
1
1
  # class to count the number of cops from a list of RuboCop "only" options
2
2
  # i.e. it accounts for whole "Departments"
3
3
  #
4
- # Examaples:
4
+ # Examples:
5
5
  # "Style/Blah" is 1 cops
6
6
  # "Layout" may represent 70 cops
7
7
  module Nucop
@@ -0,0 +1,24 @@
1
+ module Nucop
2
+ module Helpers
3
+ # Knows the list of gems the nucop makes available.
4
+ module RubocopGemDependencies
5
+ module_function
6
+
7
+ def rubocop_gems
8
+ %w[
9
+ rubocop
10
+ rubocop-capybara
11
+ rubocop-factory_bot
12
+ rubocop-graphql
13
+ rubocop-performance
14
+ rubocop-rails
15
+ rubocop-rake
16
+ rubocop-rspec
17
+ rubocop-rspec_rails
18
+ rubocop-rubycw
19
+ rubocop-thread_safety
20
+ ]
21
+ end
22
+ end
23
+ end
24
+ end
data/lib/nucop/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Nucop
2
- VERSION = "0.11.0"
2
+ VERSION = "0.11.2"
3
3
  end
data/lib/nucop.rb CHANGED
@@ -3,9 +3,9 @@ require "nucop/version"
3
3
  require "rubocop"
4
4
  require "git_diff_parser"
5
5
 
6
- Dir[File.join(__dir__, "nucop/helpers/**/*.rb")].sort.each { |f| require f }
7
- Dir[File.join(__dir__, "nucop/formatters/**/*.rb")].sort.each { |f| require f }
8
- Dir[File.join(__dir__, "nucop/cops/**/*.rb")].sort.each { |f| require f }
6
+ Dir[File.join(__dir__, "nucop/helpers/**/*.rb")].each { |f| require f }
7
+ Dir[File.join(__dir__, "nucop/formatters/**/*.rb")].each { |f| require f }
8
+ Dir[File.join(__dir__, "nucop/cops/**/*.rb")].each { |f| require f }
9
9
 
10
10
  module Nucop
11
11
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nucop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.11.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Schweier
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-06-19 00:00:00.000000000 Z
11
+ date: 2024-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: git_diff_parser
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '4.0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '4.0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: rubocop
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -136,6 +122,20 @@ dependencies:
136
122
  - - "~>"
137
123
  - !ruby/object:Gem::Version
138
124
  version: '3.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rubocop-rspec_rails
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '2.30'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '2.30'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rubocop-rubycw
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -164,6 +164,20 @@ dependencies:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0.5'
167
+ - !ruby/object:Gem::Dependency
168
+ name: git_diff_parser
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '4.0'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '4.0'
167
181
  - !ruby/object:Gem::Dependency
168
182
  name: ruby-progressbar
169
183
  requirement: !ruby/object:Gem::Requirement
@@ -230,6 +244,7 @@ files:
230
244
  - lib/nucop/helpers/factory_bot_helper.rb
231
245
  - lib/nucop/helpers/file_path_helper.rb
232
246
  - lib/nucop/helpers/next_cop_for_promotion.rb
247
+ - lib/nucop/helpers/rubocop_gem_dependencies.rb
233
248
  - lib/nucop/version.rb
234
249
  homepage: https://rubygems.org/gems/nucop
235
250
  licenses:
@@ -237,7 +252,6 @@ licenses:
237
252
  metadata:
238
253
  homepage_uri: https://github.com/nulogy/nucop
239
254
  changelog_uri: https://github.com/nulogy/nucop/blob/master/CHANGELOG.md
240
- source_code_uri: https://github.com/nulogy/nucop
241
255
  bug_tracker_uri: https://github.com/nulogy/nucop/issues
242
256
  rubygems_mfa_required: 'true'
243
257
  post_install_message:
@@ -248,14 +262,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
248
262
  requirements:
249
263
  - - ">="
250
264
  - !ruby/object:Gem::Version
251
- version: '0'
265
+ version: '3.1'
252
266
  required_rubygems_version: !ruby/object:Gem::Requirement
253
267
  requirements:
254
268
  - - ">="
255
269
  - !ruby/object:Gem::Version
256
270
  version: '0'
257
271
  requirements: []
258
- rubygems_version: 3.5.10
272
+ rubygems_version: 3.5.14
259
273
  signing_key:
260
274
  specification_version: 4
261
275
  summary: Nulogy's implementation of RuboCop, including custom cops and additional