manageiq-style 1.1.1 → 1.3.1

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: 8ac849693fa5f8a978080fceea20375e51f377e1fa3d3d84d20f020e916f4a45
4
- data.tar.gz: 4ac69b27c626a34b009b4a286fd65b7f796422a0eca07dc847f1dbe4630caf2d
3
+ metadata.gz: 9dd177749d0a3bfe9c497b78a33a009e6f9bab38c478cf229fb837a018902f9d
4
+ data.tar.gz: 55aea3dde29d7c10c360d05229296fd35debde0b1774bef5f2d2ebfdbd5ff4c1
5
5
  SHA512:
6
- metadata.gz: cc64a1eddc621edbecee991093365eb6c6077f332566823cc86a7973ae4c60db069c49ef97d8be9b23720b49f34b21eb4d3b7ce8443e83db50abab4367a76ea6
7
- data.tar.gz: 6f3734f60de0140bf63e485850a74ca793915b785a834622fb589510c7a3dfe8661ec96ebb262a9f089f85ed1a72fb8feacac2e3c1b09956f74b77019c9ecf8e
6
+ metadata.gz: dc537ec17f3248ea1e3807ec2a5b9c5c11b53b6fe91152a304b5432d2b32d0224fd7c99568d63c18839ff64039fc346e0cd9543f91e36ce0890af5ec178c7264
7
+ data.tar.gz: 06bab93794830f362d2db32e7ec4245c710bcf930b91226f2686c1a82d103bbec39c1d42d37946d661396d5c0046fe1c35e3e50804fd9c34ba899dc7e2888e7e
data/.codeclimate.yml CHANGED
@@ -4,8 +4,13 @@ prepare:
4
4
  path: ".rubocop_base.yml"
5
5
  - url: https://raw.githubusercontent.com/ManageIQ/manageiq-style/master/.rubocop_cc_base.yml
6
6
  path: ".rubocop_cc_base.yml"
7
+ - url: https://raw.githubusercontent.com/ManageIQ/manageiq-style/master/styles/base.yml
8
+ path: styles/base.yml
9
+ - url: https://raw.githubusercontent.com/ManageIQ/manageiq-style/master/styles/cc_base.yml
10
+ path: styles/cc_base.yml
7
11
  plugins:
8
12
  rubocop:
9
13
  enabled: true
10
14
  config: ".rubocop_cc.yml"
11
15
  channel: rubocop-0-82
16
+ version: '2'
data/.rubocop.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  inherit_from:
2
- - .rubocop_base.yml
3
- # put all local rubocop config into .rubocop_local.yml as it will be loaded by .rubocop_cc.yml as well
4
- - .rubocop_local.yml
2
+ - ".rubocop_local.yml"
3
+ inherit_gem:
4
+ manageiq-style: ".rubocop_base.yml"
@@ -35,6 +35,7 @@ module ManageIQ
35
35
  ensure_rubocop_local_yml_exists
36
36
  update_codeclimate_yml
37
37
  update_generator
38
+ update_gem_source
38
39
  end
39
40
 
40
41
  private
@@ -92,7 +93,9 @@ module ManageIQ
92
93
  data["prepare"] = {
93
94
  "fetch" => [
94
95
  {"url" => "https://raw.githubusercontent.com/ManageIQ/manageiq-style/master/.rubocop_base.yml", "path" => ".rubocop_base.yml"},
95
- {"url" => "https://raw.githubusercontent.com/ManageIQ/manageiq-style/master/.rubocop_cc_base.yml", "path" => ".rubocop_cc_base.yml"}
96
+ {"url" => "https://raw.githubusercontent.com/ManageIQ/manageiq-style/master/.rubocop_cc_base.yml", "path" => ".rubocop_cc_base.yml"},
97
+ {"url" => "https://raw.githubusercontent.com/ManageIQ/manageiq-style/master/styles/base.yml", "path" => "styles/base.yml"},
98
+ {"url" => "https://raw.githubusercontent.com/ManageIQ/manageiq-style/master/styles/cc_base.yml", "path" => "styles/cc_base.yml"},
96
99
  ]
97
100
  }
98
101
 
@@ -104,10 +107,120 @@ module ManageIQ
104
107
  "config" => ".rubocop_cc.yml",
105
108
  "channel" => cc_rubocop_channel,
106
109
  }
110
+ data["engines"]&.each do |engine, config|
111
+ data["plugins"][engine] = config
112
+ end
113
+
114
+ data.delete("engines") # moved to plugins
115
+ data.delete("ratings") # deprecated
116
+
117
+ exclude_paths = data.delete("exclude_paths") # renamed
118
+ data["exclude_patterns"] = exclude_paths if exclude_paths
119
+
120
+ data["version"] ||= "2"
107
121
 
108
122
  File.write(".codeclimate.yml", data.to_yaml.sub("---\n", ""))
109
123
  end
110
124
 
125
+ def update_gem_source
126
+ if (gemspec = Dir.glob("*.gemspec").first)
127
+ update_gemspec(gemspec)
128
+ elsif File.exist?("Gemfile")
129
+ update_gemfile
130
+ end
131
+ end
132
+
133
+ def update_gemspec(gemspec)
134
+ contents = File.read(gemspec)
135
+ return if contents.include?("manageiq-style")
136
+
137
+ lines = contents.lines
138
+
139
+ obj = $1 if lines.detect { |l| l =~ /^\s+(\w+)\.name\s+=/ }
140
+ raise "couldn't find spec object name" if obj.nil?
141
+
142
+ new_line = "#{obj}.add_development_dependency \"manageiq-style\"\n"
143
+
144
+ dev_lines = lines.select { |l| l.include?("add_development_dependency") }
145
+ if dev_lines.any?
146
+ # Add manageiq-style and remove all direct rubocop references
147
+ dev_lines << new_line
148
+ dev_lines.reject! { |l| l.include?("rubocop") }
149
+
150
+ # Prepare the lines in a nice format
151
+ format_gem_source_lines!(dev_lines)
152
+ dev_lines.sort_by!(&:downcase)
153
+
154
+ # Remove the old dev lines and add the new ones
155
+ insert_at = lines.index { |l| l.include?("add_development_dependency") }
156
+ lines.delete_if { |l| l.include?("add_development_dependency") }
157
+ lines.insert(insert_at, dev_lines)
158
+ else
159
+ insert_at = -1
160
+ insert_at -= 1 until lines[insert_at].strip != "end"
161
+ lines.insert(insert_at, new_line)
162
+ end
163
+
164
+ File.write(gemspec, lines.join)
165
+ end
166
+
167
+ def update_gemfile
168
+ contents = File.read("Gemfile")
169
+ return if contents.include?("manageiq-style")
170
+
171
+ lines = contents.lines
172
+
173
+ new_line = "gem \"manageiq-style\", :require => false\n"
174
+
175
+ group_index = lines.index { |l| l.match?(/group\(?\s*:development/) }
176
+ if group_index
177
+ # Determine the group range
178
+ group_index += 1
179
+ group_end = group_index
180
+ group_end += 1 until lines[group_end].strip == "end"
181
+ group_range = (group_index..group_end - 1)
182
+
183
+ # Split lines into "gem" units including their preceding comments or blank lines
184
+ gem_units = lines[group_range].slice_after { |l| l.match?(/^\s*gem/) }.to_a
185
+
186
+ # Add manageiq-style and remove all direct rubocop references
187
+ gem_units << [new_line]
188
+ gem_units.reject! { |u| u.last.include?("rubocop") }
189
+
190
+ # Prepare the lines in a nice format
191
+ gem_lines = gem_units.map(&:last)
192
+ format_gem_source_lines!(gem_lines)
193
+ gem_units.each_with_index { |u, i| u[-1] = gem_lines[i] }
194
+ gem_units.sort_by! { |u| u.last.downcase }
195
+ gem_units.flatten!
196
+
197
+ # Remove the old group lines and add the new ones
198
+ lines.slice!(group_range)
199
+ lines.insert(group_index, gem_units)
200
+ else
201
+ lines << <<~RUBY
202
+
203
+ group :development do
204
+ #{new_line}
205
+ end
206
+ RUBY
207
+ end
208
+
209
+ File.write("Gemfile", lines.join)
210
+ end
211
+
212
+ def format_gem_source_lines!(lines)
213
+ indent = lines.first.match(/^\s+/).to_s
214
+
215
+ lines.map! { |l| l.strip.gsub(/[()]/, " ").split(" ", 3) } # Split to [prefix, gem, versions]
216
+ lines.each { |parts| parts[1].tr!("'", "\"")} # Ensure double quoted gem name
217
+ max_width = lines.map { |parts| parts[1].size }.max # Determine the widest gem name
218
+ lines.each { |parts| parts[1] = parts[1].ljust(max_width, " ") } # Apply the width
219
+ lines.map! { |parts| parts.join(" ").strip.insert(0, indent) << "\n" } # Back to strings
220
+
221
+ lines
222
+ end
223
+
111
224
  def update_generator
112
225
  plugin_dir = "lib/generators/manageiq/plugin/templates"
113
226
 
@@ -1,5 +1,5 @@
1
1
  module ManageIQ
2
2
  module Style
3
- VERSION = "1.1.1"
3
+ VERSION = "1.3.1"
4
4
  end
5
5
  end
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.description = spec.summary
10
10
  spec.homepage = "https://github.com/ManageIQ/manageiq-style"
11
11
  spec.license = "MIT"
12
- spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
12
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.0.0")
13
13
 
14
14
  spec.metadata["homepage_uri"] = spec.homepage
15
15
  spec.metadata["source_code_uri"] = spec.homepage
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
25
25
 
26
26
  spec.add_runtime_dependency "more_core_extensions"
27
27
  spec.add_runtime_dependency "optimist"
28
- spec.add_runtime_dependency "rubocop", "~> 0.82.0"
28
+ spec.add_runtime_dependency "rubocop", "~> 1.13"
29
29
  spec.add_runtime_dependency "rubocop-performance"
30
30
  spec.add_runtime_dependency "rubocop-rails"
31
31
 
data/styles/base.yml CHANGED
@@ -3,11 +3,12 @@ require:
3
3
  - rubocop-performance
4
4
 
5
5
  AllCops:
6
- NewCops: disable
6
+ NewCops: enable
7
7
  Exclude:
8
8
  - spec/manageiq/**/*
9
9
  - vendor/**/*
10
- TargetRubyVersion: 2.5
10
+ SuggestExtensions: false
11
+ TargetRubyVersion: 2.6
11
12
  Layout/HashAlignment:
12
13
  EnforcedHashRocketStyle: table
13
14
  EnforcedColonStyle: table
@@ -17,6 +18,8 @@ Layout/EndAlignment:
17
18
  AutoCorrect: true
18
19
  Layout/ExtraSpacing:
19
20
  AutoCorrect: true
21
+ Exclude:
22
+ - Gemfile
20
23
  Layout/LineLength:
21
24
  Enabled: false
22
25
  Layout/SpaceAroundMethodCallOperator:
@@ -248,6 +251,10 @@ Style/MethodCallWithArgsParentheses:
248
251
  # Rake
249
252
  - desc
250
253
  - task
254
+ Style/NegatedIf:
255
+ Enabled: false
256
+ Style/NegatedIfElseCondition:
257
+ Enabled: false
251
258
  Style/NumericLiterals:
252
259
  AutoCorrect: false
253
260
  Style/NumericPredicate:
data/styles/cc_base.yml CHANGED
@@ -4,7 +4,7 @@
4
4
  #
5
5
  ---
6
6
  AllCops:
7
- TargetRubyVersion: 2.4
7
+ TargetRubyVersion: 2.6
8
8
  Bundler:
9
9
  Enabled: true
10
10
  Gemspec:
@@ -23,6 +23,8 @@ Security:
23
23
  Enabled: true
24
24
  Style:
25
25
  Enabled: false
26
+ Layout/LineLength:
27
+ Enabled: false
26
28
  Metrics/AbcSize:
27
29
  Enabled: false
28
30
  Metrics/BlockLength:
@@ -34,8 +36,6 @@ Metrics/ClassLength:
34
36
  Metrics/CyclomaticComplexity:
35
37
  Enabled: true
36
38
  Max: 11
37
- Metrics/LineLength:
38
- Enabled: false
39
39
  Metrics/MethodLength:
40
40
  Enabled: false
41
41
  Metrics/ModuleLength:
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: manageiq-style
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ManageIQ Authors
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-10 00:00:00.000000000 Z
11
+ date: 2021-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: more_core_extensions
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.82.0
47
+ version: '1.13'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.82.0
54
+ version: '1.13'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rubocop-performance
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -109,7 +109,7 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '3.0'
111
111
  description: Style and linting configuration for ManageIQ projects.
112
- email:
112
+ email:
113
113
  executables:
114
114
  - manageiq-style
115
115
  extensions: []
@@ -145,7 +145,7 @@ licenses:
145
145
  metadata:
146
146
  homepage_uri: https://github.com/ManageIQ/manageiq-style
147
147
  source_code_uri: https://github.com/ManageIQ/manageiq-style
148
- post_install_message:
148
+ post_install_message:
149
149
  rdoc_options: []
150
150
  require_paths:
151
151
  - lib
@@ -153,15 +153,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
153
153
  requirements:
154
154
  - - ">="
155
155
  - !ruby/object:Gem::Version
156
- version: 2.3.0
156
+ version: 2.0.0
157
157
  required_rubygems_version: !ruby/object:Gem::Requirement
158
158
  requirements:
159
159
  - - ">="
160
160
  - !ruby/object:Gem::Version
161
161
  version: '0'
162
162
  requirements: []
163
- rubygems_version: 3.0.6
164
- signing_key:
163
+ rubygems_version: 3.2.17
164
+ signing_key:
165
165
  specification_version: 4
166
166
  summary: Style and linting configuration for ManageIQ projects.
167
167
  test_files: []