standard 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/config/ruby-2.5.yml CHANGED
@@ -1,4 +1,4 @@
1
- inherit_from: ./ruby-2.7.yml
1
+ inherit_from: ./ruby-2.6.yml
2
2
 
3
3
  AllCops:
4
4
  TargetRubyVersion: 2.5
@@ -0,0 +1,10 @@
1
+ inherit_from: ./ruby-2.7.yml
2
+
3
+ AllCops:
4
+ TargetRubyVersion: 2.6
5
+
6
+ Style/NumberedParameters:
7
+ Enabled: false
8
+
9
+ Style/NumberedParametersLimit:
10
+ Enabled: false
@@ -10,7 +10,11 @@ class Standard::CreatesConfigStore
10
10
  private
11
11
 
12
12
  def rubocop_yaml_path(desired_version)
13
- file_name = if desired_version < Gem::Version.new("1.9")
13
+ default = "base.yml"
14
+
15
+ file_name = if !Gem::Version.correct?(desired_version)
16
+ default
17
+ elsif desired_version < Gem::Version.new("1.9")
14
18
  "ruby-1.8.yml"
15
19
  elsif desired_version < Gem::Version.new("2.0")
16
20
  "ruby-1.9.yml"
@@ -25,7 +29,7 @@ class Standard::CreatesConfigStore
25
29
  elsif desired_version < Gem::Version.new("3.0")
26
30
  "ruby-2.7.yml"
27
31
  else
28
- "base.yml"
32
+ default
29
33
  end
30
34
 
31
35
  Pathname.new(__dir__).join("../../../config/#{file_name}")
@@ -1,7 +1,7 @@
1
1
  class Standard::CreatesConfigStore
2
2
  class SetsTargetRubyVersion
3
3
  def call(options_config, standard_config)
4
- options_config["AllCops"]["TargetRubyVersion"] = floatify_version(
4
+ options_config["AllCops"]["TargetRubyVersion"] = normalize_version(
5
5
  max_rubocop_supported_version(standard_config[:ruby_version])
6
6
  )
7
7
  end
@@ -9,6 +9,8 @@ class Standard::CreatesConfigStore
9
9
  private
10
10
 
11
11
  def max_rubocop_supported_version(desired_version)
12
+ return desired_version unless Gem::Version.correct?(desired_version)
13
+
12
14
  rubocop_supported_version = Gem::Version.new("2.5")
13
15
  if desired_version < rubocop_supported_version
14
16
  rubocop_supported_version
@@ -17,7 +19,9 @@ class Standard::CreatesConfigStore
17
19
  end
18
20
  end
19
21
 
20
- def floatify_version(version)
22
+ def normalize_version(version)
23
+ return version unless Gem::Version.correct?(version)
24
+
21
25
  major, minor = version.segments
22
26
  "#{major}.#{minor}".to_f # lol
23
27
  end
@@ -19,6 +19,7 @@ module Standard
19
19
  @detects_fixability = DetectsFixability.new
20
20
  @header_printed_already = false
21
21
  @fix_suggestion_printed_already = false
22
+ @offenses_encountered = false
22
23
  end
23
24
 
24
25
  def started(_target_files)
@@ -26,7 +27,11 @@ module Standard
26
27
  end
27
28
 
28
29
  def file_finished(file, offenses)
29
- return unless (uncorrected_offenses = offenses.reject(&:corrected?)).any?
30
+ uncorrected_offenses = offenses.reject(&:corrected?)
31
+
32
+ return unless uncorrected_offenses.any?
33
+
34
+ @offenses_encountered = true
30
35
 
31
36
  print_header_once
32
37
  print_fix_suggestion_once(uncorrected_offenses)
@@ -36,6 +41,10 @@ module Standard
36
41
  end
37
42
  end
38
43
 
44
+ def finished(inspected_files)
45
+ print_todo_congratulations
46
+ end
47
+
39
48
  private
40
49
 
41
50
  def print_header_once
@@ -64,7 +73,7 @@ module Standard
64
73
  return unless todo_file
65
74
 
66
75
  todo_ignore_files = options[:todo_ignore_files]
67
- return unless todo_ignore_files
76
+ return unless todo_ignore_files&.any?
68
77
 
69
78
  output.print <<-HEADER.gsub(/^ {8}/, "")
70
79
  WARNING: this project is being migrated to standard gradually via `#{todo_file}` and is ignoring these files:
@@ -75,6 +84,20 @@ module Standard
75
84
  end
76
85
  end
77
86
 
87
+ def print_todo_congratulations
88
+ return if @offenses_encountered
89
+
90
+ todo_file = options[:todo_file]
91
+ return unless todo_file
92
+
93
+ todo_ignore_files = options[:todo_ignore_files]
94
+ return if todo_ignore_files&.any?
95
+
96
+ output.print <<-HEADER.gsub(/^ {8}/, "")
97
+ Congratulations, you've successfully migrated this project to Standard! Delete `#{todo_file}` in celebration.
98
+ HEADER
99
+ end
100
+
78
101
  def path_to(file)
79
102
  Pathname.new(file).relative_path_from(Pathname.new(Dir.pwd))
80
103
  end
@@ -24,7 +24,7 @@ module Standard
24
24
 
25
25
  def construct_config(yaml_path, standard_yaml, todo_path, todo_yaml)
26
26
  {
27
- ruby_version: Gem::Version.new((standard_yaml["ruby_version"] || RUBY_VERSION)),
27
+ ruby_version: normalized_ruby_version(standard_yaml["ruby_version"]),
28
28
  fix: !!standard_yaml["fix"],
29
29
  format: standard_yaml["format"],
30
30
  parallel: !!standard_yaml["parallel"],
@@ -36,6 +36,12 @@ module Standard
36
36
  }
37
37
  end
38
38
 
39
+ def normalized_ruby_version(version)
40
+ return version if version && !Gem::Version.correct?(version)
41
+
42
+ Gem::Version.new(version || RUBY_VERSION)
43
+ end
44
+
39
45
  def expand_ignore_config(ignore_config)
40
46
  arrayify(ignore_config).map { |rule|
41
47
  if rule.is_a?(String)
@@ -1,3 +1,3 @@
1
1
  module Standard
2
- VERSION = Gem::Version.new("1.3.0")
2
+ VERSION = Gem::Version.new("1.4.0")
3
3
  end
data/standard.gemspec CHANGED
@@ -19,6 +19,6 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- spec.add_dependency "rubocop", "1.20.0"
22
+ spec.add_dependency "rubocop", "1.22.3"
23
23
  spec.add_dependency "rubocop-performance", "1.11.5"
24
24
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: standard
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Searls
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-08-27 00:00:00.000000000 Z
11
+ date: 2021-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 1.20.0
19
+ version: 1.22.3
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 1.20.0
26
+ version: 1.22.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rubocop-performance
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -64,6 +64,7 @@ files:
64
64
  - config/ruby-2.3.yml
65
65
  - config/ruby-2.4.yml
66
66
  - config/ruby-2.5.yml
67
+ - config/ruby-2.6.yml
67
68
  - config/ruby-2.7.yml
68
69
  - docs/RELEASE.md
69
70
  - exe/standardrb