theforeman-rubocop 0.0.3 → 0.1.0

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: 56e4900920ca6ad6e7559e62658fc8e94b13e2ab8f271df397acf6e73443cb90
4
- data.tar.gz: 052cb67edccee299ba06af861f8f567e257ac62db6d96f68a025eb417008cebe
3
+ metadata.gz: f933f45fd6966bc09f46ba494268c9e93a26b1817ee530cf9967098f5ebaed4a
4
+ data.tar.gz: e6743de32b593b8c307908395e5b86dd6367f0265a4249f1f435a79d29b94663
5
5
  SHA512:
6
- metadata.gz: 7113b1156b475fe25b60c18ee4fd0cebe20a4e9299965b7adfd23008319de42f006ffa11bd37937fcb0d97b2cd0f890fc52464decc98f01312107c89f6600744
7
- data.tar.gz: 957a747731c40f0e4f100908b9de78fe196bc8d3811a9805cc5bccfca588bab9619f4a95516ffa574c266c05ff1e2238000d793400bef0e50b1f85d9e60ec1f8
6
+ metadata.gz: 1fefc5ca7d7899ec5882cc2d204c2b37892614746781e3762ecaecd370e5348c2d4320157ac19d3b15d0c759f8662ce8489226b77468566d0f6045f516673836
7
+ data.tar.gz: d402190a05d300b66a913af3bc7bb263442e90643dae4c45dbc961f95f99e925a6da0f67e12b755f7fbdb7d5d310cfef12ae1cab4b03132f23003f3feaaaf451
@@ -1,8 +1,9 @@
1
1
  name: Publish RubyGem
2
2
 
3
3
  on:
4
- tags:
5
- - v*
4
+ create:
5
+ tags:
6
+ - v*
6
7
 
7
8
  jobs:
8
9
  publish_ghp:
data/README.md CHANGED
@@ -14,33 +14,48 @@ Instead of defining the rules for plugin per plugin, plugins can include default
14
14
 
15
15
  ## Usage
16
16
 
17
+ There is also a [guide how to run this in GH action](docs/github_action.md)
18
+
17
19
  ```ruby
18
20
  # Gemfile
19
- gem 'theforeman-rubocop', '~> 0.0.2'
21
+ gem 'theforeman-rubocop', '~> 0.0.4'
20
22
  ```
21
23
 
22
24
  And configure in the `.rubocop.yml`.
23
25
 
24
- ### Easiest config - get all
26
+ ### Easiest config - all opinionated Cops `strict`
27
+
28
+ ```yaml
29
+ inherit_gem:
30
+ theforeman-rubocop:
31
+ - strict.yml
32
+ ```
25
33
 
34
+ ### Basic style - `default`, performance and rails cops
26
35
  ```yaml
27
36
  inherit_gem:
28
37
  theforeman-rubocop:
29
- - all.yml
38
+ - default.yml
30
39
  ```
31
40
 
32
- ### Basic style and performance cops
41
+ ### Not intrusive style - `lenient`
42
+ It is similar to default, but has some not as important cops disabled.
43
+ See `rules/style_lenient.yml` for disabled cops.
44
+
33
45
  ```yaml
34
46
  inherit_gem:
35
47
  theforeman-rubocop:
36
- - all.yml
48
+ - lenient.yml
37
49
  ```
38
50
 
39
- ### All cops, including newly introduced ones
51
+ ### All opinionated cops with new ones - `strictest`
52
+ If you want to closely follow what RuboCop introduces in its new versions, use this level.
53
+ It is the same as `strict`, but enables the newly introduced cops.
54
+
40
55
  ```yaml
41
56
  inherit_gem:
42
57
  theforeman-rubocop:
43
- - edge.yml
58
+ - strictest.yml
44
59
  ```
45
60
 
46
61
  ### Choose just some cops
@@ -51,11 +66,14 @@ Cops are splited in categories for your convenience, so you can opt-out some cop
51
66
  ```yaml
52
67
  inherit_gem:
53
68
  theforeman-rubocop:
54
- - rules/style.yml
69
+ - rules/base.yml
55
70
  - rules/ruby_target.yml
71
+ - rules/style.yml
72
+ - rules/metrics.yml
56
73
  - rules/performance.yml
57
74
  - rules/rails.yml
58
75
  - rules/minitest.yml
76
+ - rules/style_lenient.yml
59
77
 
60
78
  AllCops:
61
79
  NewCops: disable
data/default.yml CHANGED
@@ -1,10 +1,9 @@
1
1
  inherit_from:
2
+ - rules/base.yml
3
+ - rules/ruby_target.yml
2
4
  - rules/style.yml
3
5
  - rules/performance.yml
6
+ - rules/rails.yml
4
7
 
5
8
  AllCops:
6
9
  NewCops: disable
7
- Exclude:
8
- - 'db/schema.rb'
9
- - 'node_modules/**/*'
10
- - 'vendor/**/*'
@@ -0,0 +1,51 @@
1
+ # How to run RuboCop in GH action
2
+
3
+ ## Foreman plugin
4
+
5
+ We will cover how to do use this in Foreman plugin. It should work for any rubygem the same tho.
6
+
7
+ Rubocop doesn't benefit from running in the full Foreman environment so it is actually better to have own dependency in Gemfile on it.
8
+ We are then able to run the rubocop directly in the plugin folder, which is much faster as we install only the plugin dependencies, not the full foreman dependencies.
9
+
10
+ In theory, you can just `gem install theforeman-foreman` in the action, but it is discouraged as it is then hard to synchronize what version you use in the CI.
11
+
12
+ ### Plugin `Gemfile`
13
+
14
+ ```ruby
15
+ source 'https://rubygems.org'
16
+ gemspec
17
+
18
+ # We use special group rubocop so we can opt out from all dependencies but rubocop.
19
+ gem 'theforeman-rubocop', '~> 0.1.0', groups: %i[development rubocop]
20
+ ```
21
+
22
+ ### GH action
23
+
24
+ Following GH action will run
25
+
26
+ ```yaml
27
+ name: Ruby Testing
28
+ on:
29
+ pull_request:
30
+ push:
31
+ branches:
32
+ - master
33
+ jobs:
34
+ rubocop:
35
+ runs-on: ubuntu-latest
36
+ env:
37
+ BUNDLE_WITHOUT: development:test
38
+ steps:
39
+ - uses: actions/checkout@v2
40
+ - name: Setup Ruby
41
+ uses: ruby/setup-ruby@v1
42
+ with:
43
+ ruby-version: 2.7 # Currently supported ruby verion
44
+ bundler-cache: true
45
+ - name: Run rubocop
46
+ run: bundle exec rubocop -P --format github
47
+ view_specs:
48
+ runs-on: ubuntu-latest
49
+ needs: rubocop
50
+ # .... Whatever you run as tests if you run them in GH actions
51
+ ```
data/lenient.yml ADDED
@@ -0,0 +1,3 @@
1
+ inherit_from:
2
+ - default.yml
3
+ - rules/style_lenient.yml
@@ -1,5 +1,5 @@
1
1
  module Theforeman
2
2
  module Rubocop
3
- VERSION = '0.0.3'.freeze
3
+ VERSION = '0.1.0'.freeze
4
4
  end
5
5
  end
data/minitest.yml ADDED
@@ -0,0 +1,2 @@
1
+ inherit_from:
2
+ - rules/minitest.yml
data/rules/base.yml ADDED
@@ -0,0 +1,5 @@
1
+ AllCops:
2
+ Exclude:
3
+ - 'db/schema.rb'
4
+ - 'node_modules/**/*'
5
+ - 'vendor/**/*'
data/rules/metrics.yml ADDED
@@ -0,0 +1,8 @@
1
+ Metrics/BlockLength:
2
+ Exclude:
3
+ - 'spec/**/*'
4
+ - 'test/**/*'
5
+
6
+ Metrics/ClassLength:
7
+ Exclude:
8
+ - 'test/**/*'
data/rules/style.yml CHANGED
@@ -5,6 +5,9 @@ Layout/ArgumentAlignment:
5
5
  EnforcedStyle: with_fixed_indentation
6
6
  IndentationWidth: 2
7
7
 
8
+ Layout/FirstArgumentIndentation:
9
+ EnforcedStyle: consistent
10
+
8
11
  Style/Alias:
9
12
  EnforcedStyle: prefer_alias_method
10
13
 
@@ -22,13 +25,9 @@ Style/Documentation:
22
25
  Style/EmptyMethod:
23
26
  EnforcedStyle: expanded
24
27
 
25
- # Support both, Ruby 1.9 hashmap and hash-rocket syntax
28
+ # Enforce ruby19 style
26
29
  Style/HashSyntax:
27
- EnforcedStyle: no_mixed_keys
28
-
29
- # Both double and single quotes are OK
30
- Style/StringLiterals:
31
- Enabled: false
30
+ EnforcedStyle: ruby19_no_mixed_keys
32
31
 
33
32
  Style/TernaryParentheses:
34
33
  EnforcedStyle: require_parentheses_when_complex
@@ -0,0 +1,31 @@
1
+ Naming/VariableNumber:
2
+ Enabled: false
3
+
4
+ # Don't prefer is_a? over kind_of?
5
+ Style/ClassCheck:
6
+ Enabled: false
7
+
8
+ Style/HashAsLastArrayItem:
9
+ Enabled: false
10
+
11
+ # Support both, Ruby 1.9 hashmap and hash-rocket syntax
12
+ Style/HashSyntax:
13
+ EnforcedStyle: no_mixed_keys
14
+
15
+ # disabled until we can configure "+" as concat sign
16
+ Style/LineEndConcatenation:
17
+ Enabled: false
18
+
19
+ # Both double and single quotes are OK
20
+ Style/StringLiterals:
21
+ Enabled: false
22
+
23
+ Style/StringConcatenation:
24
+ Enabled: false
25
+
26
+ Style/SymbolArray:
27
+ EnforcedStyle: brackets
28
+ MinSize: 1
29
+
30
+ Style/WordArray:
31
+ Enabled: false
data/strict.yml ADDED
@@ -0,0 +1,11 @@
1
+ inherit_from:
2
+ - rules/base.yml
3
+ - rules/ruby_target.yml
4
+ - rules/style.yml
5
+ - rules/performance.yml
6
+ - rules/metrics.yml
7
+ - rules/rails.yml
8
+ - rules/minitest.yml
9
+
10
+ AllCops:
11
+ NewCops: disable
data/strictest.yml ADDED
@@ -0,0 +1,5 @@
1
+ inherit_from:
2
+ - strict.yml
3
+
4
+ AllCops:
5
+ NewCops: enable
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.authors = IO.readlines('AUTHORS', encoding: 'utf-8').map(&:strip)
11
11
  spec.email = ['foreman-dev@googlegroups.com']
12
12
 
13
- spec.summary = 'This gem guides and shares rubocop style configs.'
13
+ spec.summary = 'Shared Rubocop configuration for theforeman.org family of projects.'
14
14
  spec.homepage = 'https://github.com/theforeman/theforeman-rubocop'
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
@@ -20,12 +20,13 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ['lib']
22
22
 
23
- spec.add_dependency 'rubocop', '~> 0.89.0'
23
+ spec.add_dependency 'rubocop', '~> 1.23.0'
24
24
  spec.add_dependency 'rubocop-checkstyle_formatter', '~> 0.4.0'
25
- spec.add_dependency 'rubocop-rspec', '~> 1.43.2'
26
- spec.add_dependency 'rubocop-minitest', '~> 0.10.1'
25
+ spec.add_dependency 'rubocop-rspec', '~> 2.0'
26
+ spec.add_dependency 'rubocop-minitest', '~> 0.17.0'
27
27
  spec.add_dependency 'rubocop-performance', '~> 1.8.1'
28
- spec.add_dependency 'rubocop-rails', '~> 2.8.1'
28
+ spec.add_dependency 'rubocop-rails', '~> 2.12.4'
29
+ spec.add_dependency 'rubocop-graphql', '~> 0.11.2'
29
30
  spec.add_development_dependency 'bundler', '~> 2.1'
30
31
  spec.add_development_dependency 'rake', '~> 13.0'
31
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: theforeman-rubocop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ondřej Ezr
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-09-30 00:00:00.000000000 Z
11
+ date: 2021-12-08 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: 0.89.0
19
+ version: 1.23.0
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: 0.89.0
26
+ version: 1.23.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rubocop-checkstyle_formatter
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,28 +44,28 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.43.2
47
+ version: '2.0'
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: 1.43.2
54
+ version: '2.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rubocop-minitest
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.10.1
61
+ version: 0.17.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.10.1
68
+ version: 0.17.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rubocop-performance
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +86,28 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 2.8.1
89
+ version: 2.12.4
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 2.8.1
96
+ version: 2.12.4
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop-graphql
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 0.11.2
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 0.11.2
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: bundler
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -122,7 +136,7 @@ dependencies:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
138
  version: '13.0'
125
- description:
139
+ description:
126
140
  email:
127
141
  - foreman-dev@googlegroups.com
128
142
  executables: []
@@ -132,20 +146,26 @@ files:
132
146
  - ".github/workflows/gem-push.yml"
133
147
  - AUTHORS
134
148
  - README.md
135
- - all.yml
136
149
  - default.yml
137
- - edge.yml
150
+ - docs/github_action.md
151
+ - lenient.yml
138
152
  - lib/theforeman/rubocop/version.rb
153
+ - minitest.yml
154
+ - rules/base.yml
155
+ - rules/metrics.yml
139
156
  - rules/minitest.yml
140
157
  - rules/performance.yml
141
158
  - rules/rails.yml
142
159
  - rules/ruby_target.yml
143
160
  - rules/style.yml
161
+ - rules/style_lenient.yml
162
+ - strict.yml
163
+ - strictest.yml
144
164
  - theforeman-rubocop.gemspec
145
165
  homepage: https://github.com/theforeman/theforeman-rubocop
146
166
  licenses: []
147
167
  metadata: {}
148
- post_install_message:
168
+ post_install_message:
149
169
  rdoc_options: []
150
170
  require_paths:
151
171
  - lib
@@ -160,8 +180,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
160
180
  - !ruby/object:Gem::Version
161
181
  version: '0'
162
182
  requirements: []
163
- rubygems_version: 3.1.2
164
- signing_key:
183
+ rubygems_version: 3.1.6
184
+ signing_key:
165
185
  specification_version: 4
166
- summary: This gem guides and shares rubocop style configs.
186
+ summary: Shared Rubocop configuration for theforeman.org family of projects.
167
187
  test_files: []
data/all.yml DELETED
@@ -1,6 +0,0 @@
1
- inherit_from:
2
- - default.yml
3
- - rules/ruby_target.yml
4
- - rules/rails.yml
5
- - rules/minitest.yml
6
-
data/edge.yml DELETED
@@ -1,9 +0,0 @@
1
- inherit_from:
2
- - all.yml
3
-
4
- AllCops:
5
- NewCops: enable
6
-
7
- # Enforce ruby19 style
8
- Style/HashSyntax:
9
- EnforcedStyle: ruby19_no_mixed_keys