rubocop-gradual 0.2.0 → 0.3.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: 5a09b07cf179aca2230eacccaa07666e3c12b10d7d7f3972130c300649f60c0f
4
- data.tar.gz: 758580d293c1ce1cbaa48ab811074b0b08b09898d88152ece3b4c41f8c340148
3
+ metadata.gz: a8d8cb41d6a825538a0b0411867bcef6864d16ec393f24c7d9f84e05f886caa8
4
+ data.tar.gz: e7230b837f6f39967e4c472a2a8f466d061da24af7ea9efee060175f0617bb17
5
5
  SHA512:
6
- metadata.gz: adf64a0823d530ea44ca6736914f14decc7dcbe006d0559392efa8576b28d176a7832a8b13d895ceb1d234fd0861a95f70f91b6313e5bb15c1da5cc8f83f9a57
7
- data.tar.gz: 04a831f72f97429a2812de310884bcc7d31726858f5b0732bb4477a6be9a1776ad0adeafbd8efb7d5d6b5b38cb8e243e28cab2ec801aaad20e395bf4c35fb042
6
+ metadata.gz: 223e2e205074038f7af48b2be3d06d98136ef7d9d65b8bcf3c153d8eee937d4f6f45bada38eaf6a5f8f257e4a95230c8e9a7b19b3158abe9e599bf3ce5e53d45
7
+ data.tar.gz: 57824cdfee2b8423e88c30f50c95b8f8bba78edfcfd36fe94c73e88e4798eba62c899fb1cefc4719baf08b48422e545e59f86c78affe3a835c3aaa68f9a05c25
data/CHANGELOG.md CHANGED
@@ -7,11 +7,57 @@ and this project adheres to [Semantic Versioning].
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.3.0] - 2022-10-26
11
+
12
+ ### Added
13
+
14
+ - Partial linting (experimental). ([@skryukov])
15
+
16
+ Partial linting is useful when you want to run RuboCop Gradual on a subset of files, for example, on changed files in a pull request:
17
+
18
+ ```shell
19
+ rubocop-gradual path/to/file # run `rubocop-gradual` on a subset of files
20
+ rubocop-gradual --staged # run `rubocop-gradual` on staged files
21
+ rubocop-gradual --unstaged # run `rubocop-gradual` on unstaged files
22
+ rubocop-gradual --commit origin/main # run `rubocop-gradual` on changed files since the commit
23
+
24
+ # it's possible to combine options with autocorrect:
25
+ rubocop-gradual --staged --autocorrect # run `rubocop-gradual` with autocorrect on staged files
26
+ ```
27
+
28
+ - Require mode (experimental). ([@skryukov])
29
+
30
+ RuboCop Gradual can be used in "Require mode", which is a way to replace `rubocop` with `rubocop-gradual`:
31
+
32
+ ```yaml
33
+ # .rubocop.yml
34
+
35
+ require:
36
+ - rubocop-gradual
37
+ ```
38
+
39
+ - Built-in Rake tasks. ([@skryukov])
40
+
41
+ ```ruby
42
+ # Rakefile
43
+ require "rubocop/gradual/rake_task"
44
+
45
+ RuboCop::Gradual::RakeTask.new
46
+ ```
47
+
48
+ ### Fixed
49
+
50
+ - Issues with the same location ordered by the message. ([@skryukov])
51
+
10
52
  ## [0.2.0] - 2022-07-26
11
53
 
12
- - Add autocorrection options. ([@skryukov])
54
+ ### Added
55
+
56
+ - Autocorrection options. ([@skryukov])
13
57
  Run `rubocop-gradual -a` and `rubocop-gradual -A` to autocorrect new and changed files and then update the lock file.
14
58
 
59
+ ### Changed
60
+
15
61
  - Rename `--ci` to `--check` option. ([@skryukov])
16
62
 
17
63
  - Rename `-u, --update` to `-U, --force-update` option. ([@skryukov])
@@ -34,7 +80,8 @@ and this project adheres to [Semantic Versioning].
34
80
 
35
81
  [@skryukov]: https://github.com/skryukov
36
82
 
37
- [Unreleased]: https://github.com/skryukov/rubocop-gradual/compare/v0.2.0...HEAD
83
+ [Unreleased]: https://github.com/skryukov/rubocop-gradual/compare/v0.3.0...HEAD
84
+ [0.3.0]: https://github.com/skryukov/rubocop-gradual/compare/v0.2.0...v0.3.0
38
85
  [0.2.0]: https://github.com/skryukov/rubocop-gradual/compare/v0.1.1...v0.2.0
39
86
  [0.1.1]: https://github.com/skryukov/rubocop-gradual/compare/v0.1.0...v0.1.1
40
87
  [0.1.0]: https://github.com/skryukov/rubocop-gradual/commits/v0.1.0
data/README.md CHANGED
@@ -54,6 +54,89 @@ Proposed workflow:
54
54
  -h, --help Prints this help.
55
55
  ```
56
56
 
57
+ ## Rake tasks
58
+
59
+ To use built-in Rake tasks add the following to your Rakefile:
60
+
61
+ ```ruby
62
+ # Rakefile
63
+ require "rubocop/gradual/rake_task"
64
+
65
+ RuboCop::Gradual::RakeTask.new
66
+ ```
67
+
68
+ This will add rake tasks:
69
+
70
+ ```
71
+ bundle exec rake -T
72
+ rake rubocop_gradual # Run RuboCop Gradual
73
+ rake rubocop_gradual:autocorrect # Run RuboCop Gradual with autocorrect (only when it's safe)
74
+ rake rubocop_gradual:autocorrect_all # Run RuboCop Gradual with autocorrect (safe and unsafe)
75
+ rake rubocop_gradual:check # Run RuboCop Gradual to check the lock file
76
+ rake rubocop_gradual:force_update # Run RuboCop Gradual to force update the lock file
77
+ ```
78
+
79
+ It's possible to customize the Rake task name and options:
80
+
81
+ ```ruby
82
+ # Rakefile
83
+
84
+ require "rubocop/gradual/rake_task"
85
+
86
+ RuboCop::Gradual::RakeTask.new(:custom_task_name) do |task|
87
+ task.options = %w[--gradual-file custom_gradual_file.lock]
88
+ task.verbose = false
89
+ end
90
+ ```
91
+
92
+ ## Partial linting (experimental)
93
+
94
+ RuboCop Gradual supports partial linting. It's useful when you want to run RuboCop Gradual on a subset of files, for example, on changed files in a pull request:
95
+
96
+ ```shell
97
+ rubocop-gradual path/to/file # run `rubocop-gradual` on a subset of files
98
+ rubocop-gradual --staged # run `rubocop-gradual` on staged files
99
+ rubocop-gradual --unstaged # run `rubocop-gradual` on unstaged files
100
+ rubocop-gradual --commit origin/main # run `rubocop-gradual` on changed files since the commit
101
+
102
+ # it's possible to combine options with autocorrect:
103
+ rubocop-gradual --staged --autocorrect # run `rubocop-gradual` with autocorrect on staged files
104
+ ```
105
+
106
+ ## Require mode (experimental)
107
+
108
+ RuboCop Gradual can be used in "Require mode", which is a way to replace `rubocop` with `rubocop-gradual`:
109
+
110
+ ```yaml
111
+ # .rubocop.yml
112
+
113
+ require:
114
+ - rubocop-gradual
115
+ ```
116
+
117
+ Now base `rubocop` command will run `rubocop-gradual`:
118
+
119
+ ```shell
120
+ rubocop # run `rubocop-gradual`
121
+ rubocop -a # run `rubocop-gradual` with autocorrect (only when it's safe)
122
+ rubocop -A # run `rubocop-gradual` with autocorrect (safe and unsafe)
123
+ rubocop gradual check # run `rubocop-gradual` to check the lock file
124
+ rubocop gradual force_update # run `rubocop-gradual` to force update the lock file
125
+ ```
126
+
127
+ To set a custom path to Gradual lock file, add `--gradual-file FILE` to a special `.rubocop-gradual` file:
128
+
129
+ ```
130
+ # .rubocop-gradual
131
+ --rubocop-gradual-file path/to/my_lock_file.lock
132
+ ```
133
+
134
+ To temporarily disable RuboCop Gradual, prepend command with `NO_GRADUAL=1`:
135
+
136
+ ```shell
137
+ NO_GRADUAL=1 rubocop # run `rubocop`
138
+ ```
139
+
57
140
  ## Alternatives
58
141
 
59
142
  - [RuboCop TODO file]. Comes out of the box with RuboCop. Provides a way to ignore offenses on the file level, which is problematic since it is possible to introduce new offenses without any signal from linter.
@@ -13,7 +13,7 @@ module RuboCop
13
13
  RuboCop::CLI::Environment.new(
14
14
  Configuration.rubocop_options.merge(formatters: [[Formatters::Autocorrect, nil]]),
15
15
  Configuration.rubocop_config_store,
16
- changed_or_untracked_files.map(&:path)
16
+ lint_paths
17
17
  )
18
18
  )
19
19
  runner.run
@@ -22,6 +22,12 @@ module RuboCop
22
22
 
23
23
  private
24
24
 
25
+ def lint_paths
26
+ return Configuration.target_file_paths if Configuration.lint_paths.any?
27
+
28
+ changed_or_untracked_files.map(&:path)
29
+ end
30
+
25
31
  def changed_or_untracked_files
26
32
  tracked_files = LockFile.new(Configuration.path).read_results&.files || []
27
33
 
@@ -31,20 +37,10 @@ module RuboCop
31
37
  end
32
38
 
33
39
  def target_files
34
- Parallel.map(rubocop_target_file_paths) do |path|
35
- Results::File.new(path: RuboCop::PathUtil.smart_path(path), issues: [])
40
+ Parallel.map(Configuration.target_file_paths) do |path|
41
+ Results::File.new(path: path, issues: [])
36
42
  end
37
43
  end
38
-
39
- def rubocop_target_file_paths
40
- target_finder = RuboCop::TargetFinder.new(Configuration.rubocop_config_store, Configuration.rubocop_options)
41
- mode = if Configuration.rubocop_options[:only_recognized_file_types]
42
- :only_recognized_file_types
43
- else
44
- :all_file_types
45
- end
46
- target_finder.find([], mode)
47
- end
48
44
  end
49
45
  end
50
46
  end
@@ -27,12 +27,18 @@ module RuboCop
27
27
  RuboCop::CLI::Environment.new(
28
28
  rubocop_options,
29
29
  Configuration.rubocop_config_store,
30
- []
30
+ lint_paths
31
31
  )
32
32
  )
33
33
  rubocop_runner.run
34
34
  end
35
35
 
36
+ def lint_paths
37
+ return [] if Configuration.lint_paths.empty?
38
+
39
+ Configuration.target_file_paths
40
+ end
41
+
36
42
  def rubocop_options
37
43
  Configuration.rubocop_options
38
44
  .slice(:config, :debug, :display_time)
@@ -5,11 +5,13 @@ module RuboCop
5
5
  # Configuration class stores Gradual and Rubocop options.
6
6
  module Configuration
7
7
  class << self
8
- attr_reader :options, :rubocop_options, :rubocop_results
8
+ attr_reader :options, :rubocop_options, :rubocop_results, :lint_paths, :target_file_paths
9
9
 
10
- def apply(options = {}, rubocop_options = {})
10
+ def apply(options = {}, rubocop_options = {}, lint_paths = [])
11
11
  @options = options
12
12
  @rubocop_options = rubocop_options
13
+ @lint_paths = lint_paths
14
+ @target_file_paths = rubocop_target_file_paths
13
15
  @rubocop_results = []
14
16
  end
15
17
 
@@ -38,6 +40,20 @@ module RuboCop
38
40
  config_store.options_config = rubocop_options[:config] if rubocop_options[:config]
39
41
  end
40
42
  end
43
+
44
+ private
45
+
46
+ def rubocop_target_file_paths
47
+ target_finder = RuboCop::TargetFinder.new(rubocop_config_store, rubocop_options)
48
+ mode = if rubocop_options[:only_recognized_file_types]
49
+ :only_recognized_file_types
50
+ else
51
+ :all_file_types
52
+ end
53
+ target_finder
54
+ .find(lint_paths, mode)
55
+ .map { |path| RuboCop::PathUtil.smart_path(path) }
56
+ end
41
57
  end
42
58
  end
43
59
  end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rbconfig"
4
+
5
+ module RuboCop
6
+ module Gradual
7
+ # Git class handles git commands.
8
+ module Git
9
+ class << self
10
+ def paths_by(commit)
11
+ git_installed!
12
+
13
+ case commit
14
+ when :unstaged
15
+ `git ls-files --others --exclude-standard -m`.split("\n")
16
+ when :staged
17
+ `git diff --cached --name-only`.split("\n")
18
+ else
19
+ `git diff --name-only #{commit}`.split("\n")
20
+ end
21
+ end
22
+
23
+ private
24
+
25
+ def git_installed!
26
+ void = /msdos|mswin|djgpp|mingw/.match?(RbConfig::CONFIG["host_os"]) ? "NUL" : "/dev/null"
27
+ git_found = `git --version >>#{void} 2>&1`
28
+
29
+ raise Error, "Git is not found, please install it first." unless git_found
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -2,6 +2,8 @@
2
2
 
3
3
  require "shellwords"
4
4
 
5
+ require_relative "git"
6
+
5
7
  module RuboCop
6
8
  module Gradual
7
9
  # Options class defines RuboCop Gradual cli options.
@@ -20,10 +22,10 @@ module RuboCop
20
22
  def parse(args)
21
23
  parser = define_options
22
24
  gradual_args, rubocop_args = filter_args(parser, args_from_file + args)
23
- @rubocop_options, _rubocop_paths = RuboCop::Options.new.parse(rubocop_args)
25
+ @rubocop_options, @lint_paths = RuboCop::Options.new.parse(rubocop_args)
24
26
  parser.parse(gradual_args)
25
27
 
26
- [@options, @rubocop_options]
28
+ [@options, @rubocop_options, @lint_paths]
27
29
  end
28
30
 
29
31
  private
@@ -32,6 +34,7 @@ module RuboCop
32
34
  OptionParser.new do |opts|
33
35
  define_mode_options(opts)
34
36
  define_gradual_options(opts)
37
+ define_lint_paths_options(opts)
35
38
 
36
39
  define_info_options(opts)
37
40
  end
@@ -65,6 +68,18 @@ module RuboCop
65
68
  opts.on("--gradual-file FILE", "Specify Gradual lock file.") { |path| @options[:path] = path }
66
69
  end
67
70
 
71
+ def define_lint_paths_options(opts)
72
+ opts.on("--unstaged", "Lint unstaged files.") do
73
+ @lint_paths = git_lint_paths(:unstaged)
74
+ end
75
+ opts.on("--staged", "Lint staged files.") do
76
+ @lint_paths = git_lint_paths(:staged)
77
+ end
78
+ opts.on("--commit COMMIT", "Lint files changed since the commit.") do |commit|
79
+ @lint_paths = git_lint_paths(commit)
80
+ end
81
+ end
82
+
68
83
  def define_info_options(opts)
69
84
  opts.on("-v", "--version", "Display version.") do
70
85
  puts "rubocop-gradual: #{VERSION}, rubocop: #{RuboCop::Version.version}"
@@ -77,15 +92,20 @@ module RuboCop
77
92
  end
78
93
  end
79
94
 
95
+ def git_lint_paths(commit)
96
+ @rubocop_options[:only_recognized_file_types] = true
97
+ RuboCop::Gradual::Git.paths_by(commit)
98
+ end
99
+
80
100
  def filter_args(parser, original_args, self_args = [])
81
- extract_all_args(parser).each do |arg|
101
+ extract_all_args(parser).each do |option|
82
102
  loop do
83
- break unless (i = original_args.index { |a| a.start_with?(arg) })
103
+ break unless (i = original_args.index { |a| a.start_with?(option[:name]) })
104
+
105
+ self_args << original_args.delete_at(i)
106
+ next if option[:no_args] || original_args.size <= i || original_args[i].start_with?("-")
84
107
 
85
- loop do
86
- self_args << original_args.delete_at(i)
87
- break if original_args.size <= i || original_args[i].start_with?("-")
88
- end
108
+ self_args << original_args.delete_at(i)
89
109
  end
90
110
  end
91
111
  [self_args, original_args]
@@ -93,7 +113,9 @@ module RuboCop
93
113
 
94
114
  def extract_all_args(parser)
95
115
  parser.top.list.reduce([]) do |res, option|
96
- res + option.long + option.short
116
+ no_args = option.is_a?(OptionParser::Switch::NoArgument)
117
+ options = (option.long + option.short).map { |o| { name: o, no_args: no_args } }
118
+ res + options
97
119
  end
98
120
  end
99
121
 
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rubocop-gradual"
4
+
5
+ module RuboCop
6
+ module Gradual
7
+ # Patching RuboCop::CLI to enable require mode.
8
+ module Patch
9
+ def run_command(name)
10
+ return super if name != :execute_runner || (ARGV & %w[--stdin -s]).any?
11
+
12
+ Configuration.apply(*parse_options)
13
+ puts "Gradual mode: #{Configuration.mode}" if Configuration.debug?
14
+ load_command(Configuration.command).call.to_i
15
+ end
16
+
17
+ private
18
+
19
+ def load_command(command)
20
+ require_relative "commands/#{command}"
21
+ ::RuboCop::Gradual::Commands.const_get(command.to_s.capitalize).new
22
+ end
23
+
24
+ def parse_options
25
+ options, rubocop_options = Options.new.parse(ARGV)
26
+ options[:mode] = :force_update if @env.paths[0..1] == %w[gradual force_update]
27
+ options[:mode] = :check if @env.paths[0..1] == %w[gradual check]
28
+ [options, rubocop_options]
29
+ end
30
+ end
31
+ end
32
+ end
@@ -10,7 +10,7 @@ module RuboCop
10
10
  module CalculateDiff
11
11
  class << self
12
12
  def call(new_result, old_result)
13
- return Diff.new.add_new(new_result.files) if old_result.nil?
13
+ return Diff.new.add_files(new_result.files, :new) if old_result.nil?
14
14
 
15
15
  diff_results(new_result, old_result)
16
16
  end
@@ -20,7 +20,7 @@ module RuboCop
20
20
  def diff_results(new_result, old_result)
21
21
  new_files, fixed_files, path_files_match, moved_files_match = split_files(new_result, old_result)
22
22
 
23
- diff = Diff.new.add_new(new_files).add_fixed(fixed_files)
23
+ diff = Diff.new.add_files(new_files, :new).add_files(fixed_files, :fixed)
24
24
  path_files_match.chain(moved_files_match).each do |result_file, old_file|
25
25
  diff_issues(diff, result_file, old_file)
26
26
  end
@@ -73,19 +73,6 @@ module RuboCop
73
73
  end
74
74
  possibilities.min_by { |possibility| issue.distance(possibility) }
75
75
  end
76
-
77
- def map_same_files(left, right)
78
- map_files(left.files, right.files) do |new_file, old_file|
79
- new_file.path == old_file.path
80
- end
81
- end
82
-
83
- def map_files(key_files, value_files)
84
- key_files.each_with_object({}) do |key_file, res|
85
- same_file = value_files.find { |value_file| yield(key_file, value_file) }
86
- res[key_file] = same_file if same_file
87
- end
88
- end
89
76
  end
90
77
  end
91
78
  end
@@ -33,16 +33,9 @@ module RuboCop
33
33
  end
34
34
  end
35
35
 
36
- def add_new(files)
36
+ def add_files(files, key)
37
37
  files.each do |file|
38
- add_issues(file.path, new: file.issues)
39
- end
40
- self
41
- end
42
-
43
- def add_fixed(files)
44
- files.each do |file|
45
- add_issues(file.path, fixed: file.issues)
38
+ add_issues(file.path, **{ key => file.issues })
46
39
  end
47
40
  self
48
41
  end
@@ -9,15 +9,17 @@ module RuboCop
9
9
  module Gradual
10
10
  # Process is a class that handles the processing of RuboCop results.
11
11
  class Process
12
- attr_reader :new_results, :lock_file
12
+ attr_reader :lock_file, :old_results, :new_results
13
13
 
14
14
  def initialize(rubocop_result)
15
15
  @lock_file = LockFile.new(Configuration.path)
16
+ @old_results = lock_file.read_results
16
17
  @new_results = Results.new(files: rubocop_result)
18
+ add_skipped_files_to_new_results!
17
19
  end
18
20
 
19
21
  def call
20
- diff = CalculateDiff.call(new_results, lock_file.read_results)
22
+ diff = CalculateDiff.call(new_results, old_results)
21
23
  printer = Printer.new(diff)
22
24
 
23
25
  printer.print_results
@@ -46,6 +48,13 @@ module RuboCop
46
48
 
47
49
  0
48
50
  end
51
+
52
+ def add_skipped_files_to_new_results!
53
+ return if Configuration.lint_paths.none? || old_results.nil?
54
+
55
+ skipped_files = old_results.files.reject { |file| Configuration.target_file_paths.include?(file.path) }
56
+ new_results.files.concat(skipped_files).sort!
57
+ end
49
58
  end
50
59
  end
51
60
  end
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rake"
4
+ require "rake/tasklib"
5
+
6
+ module RuboCop
7
+ module Gradual
8
+ # Rake tasks for RuboCop::Gradual.
9
+ #
10
+ # @example
11
+ # require "rubocop/gradual/rake_task"
12
+ # RuboCop::Gradual::RakeTask.new
13
+ #
14
+ class RakeTask < ::Rake::TaskLib
15
+ attr_accessor :name, :verbose, :options
16
+
17
+ def initialize(name = :rubocop_gradual, *args, &task_block)
18
+ super()
19
+ @name = name
20
+ @verbose = true
21
+ @options = []
22
+ define(args, &task_block)
23
+ end
24
+
25
+ private
26
+
27
+ def define(args, &task_block)
28
+ desc "Run RuboCop Gradual" unless ::Rake.application.last_description
29
+ define_task(name, nil, args, &task_block)
30
+ setup_subtasks(args, &task_block)
31
+ end
32
+
33
+ def setup_subtasks(args, &task_block)
34
+ namespace(name) do
35
+ desc "Run RuboCop Gradual with autocorrect (only when it's safe)."
36
+ define_task(:autocorrect, "--autocorrect", args, &task_block)
37
+
38
+ desc "Run RuboCop Gradual with autocorrect (safe and unsafe)."
39
+ define_task(:autocorrect_all, "--autocorrect-all", args, &task_block)
40
+
41
+ desc "Run RuboCop Gradual to check the lock file."
42
+ define_task(:check, "--check", args, &task_block)
43
+
44
+ desc "Run RuboCop Gradual to force update the lock file."
45
+ define_task(:force_update, "--force-update", args, &task_block)
46
+ end
47
+ end
48
+
49
+ def define_task(name, option, args, &task_block)
50
+ task(name, *args) do |_, task_args|
51
+ RakeFileUtils.verbose(verbose) do
52
+ yield(*[self, task_args].slice(0, task_block.arity)) if task_block
53
+ run_cli(verbose, option)
54
+ end
55
+ end
56
+ end
57
+
58
+ def run_cli(verbose, option)
59
+ require "rubocop-gradual"
60
+
61
+ cli = CLI.new
62
+ puts "Running RuboCop Gradual..." if verbose
63
+ result = cli.run(full_options(option))
64
+ abort("RuboCop Gradual failed!") if result.nonzero?
65
+ end
66
+
67
+ def full_options(option)
68
+ option ? options.flatten.unshift(option) : options.flatten
69
+ end
70
+ end
71
+ end
72
+ end
@@ -16,7 +16,7 @@ module RuboCop
16
16
  end
17
17
 
18
18
  def <=>(other)
19
- [line, column, length] <=> [other.line, other.column, other.length]
19
+ [line, column, length, message] <=> [other.line, other.column, other.length, other.message]
20
20
  end
21
21
 
22
22
  def to_s
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RuboCop
4
4
  module Gradual
5
- VERSION = "0.2.0"
5
+ VERSION = "0.3.0"
6
6
  end
7
7
  end
@@ -11,3 +11,8 @@ module RuboCop
11
11
  class Error < StandardError; end
12
12
  end
13
13
  end
14
+
15
+ if ENV["NO_GRADUAL"] != "1" && (RuboCop::ConfigLoader.loaded_features & %w[rubocop-gradual rubocop/gradual]).any?
16
+ require_relative "gradual/patch"
17
+ RuboCop::CLI.prepend(RuboCop::Gradual::Patch)
18
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop-gradual
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Svyatoslav Kryukov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-26 00:00:00.000000000 Z
11
+ date: 2022-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: diff-lcs
@@ -112,13 +112,16 @@ files:
112
112
  - lib/rubocop/gradual/configuration.rb
113
113
  - lib/rubocop/gradual/formatters/autocorrect.rb
114
114
  - lib/rubocop/gradual/formatters/base.rb
115
+ - lib/rubocop/gradual/git.rb
115
116
  - lib/rubocop/gradual/lock_file.rb
116
117
  - lib/rubocop/gradual/options.rb
118
+ - lib/rubocop/gradual/patch.rb
117
119
  - lib/rubocop/gradual/process.rb
118
120
  - lib/rubocop/gradual/process/calculate_diff.rb
119
121
  - lib/rubocop/gradual/process/diff.rb
120
122
  - lib/rubocop/gradual/process/matcher.rb
121
123
  - lib/rubocop/gradual/process/printer.rb
124
+ - lib/rubocop/gradual/rake_task.rb
122
125
  - lib/rubocop/gradual/results.rb
123
126
  - lib/rubocop/gradual/results/file.rb
124
127
  - lib/rubocop/gradual/results/issue.rb
@@ -149,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
152
  - !ruby/object:Gem::Version
150
153
  version: '0'
151
154
  requirements: []
152
- rubygems_version: 3.2.15
155
+ rubygems_version: 3.3.7
153
156
  signing_key:
154
157
  specification_version: 4
155
158
  summary: Gradual RuboCop plugin