theforeman-rubocop 0.0.4 → 0.1.1

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: dec7eda262ed8ce64a081f73d79ab7ca5dbf8ecfe3c764603cd354ed876f2608
4
- data.tar.gz: c665678918e1ff4447bb680602de6969efabcf670a4cea6bb96633180330b777
3
+ metadata.gz: 3b23533cc1c2840595ce95428c7257398a1304359180f2315f48711a5e2523d5
4
+ data.tar.gz: bf0688392785412597d665321895354a6f08931ee03e7a8eba761f45a3e0c87e
5
5
  SHA512:
6
- metadata.gz: 614d380c95d209a784b6e4def72fa6d75e5eed9532f0274f07d736d965facf05fe3a539d16f92b9849aa3c7b51881260dda07a13e2061da6308f2f0dcfcc02df
7
- data.tar.gz: cc33b094bb9d3dea816fd9b8d8902536d618d0281d7797aafd5eb7726ff37534ecf11f162d5535cac14a22d63c6293721f78392a47654d208060b40f9163ca4e
6
+ metadata.gz: d9743933fb61cdd5dc31ec345dc8b317375d742b3b3cb64f99595ceb1428f5dff8ef897aba4188e755c363feb76762ec683ca4de94bfb38aa80798e4e0cc63df
7
+ data.tar.gz: c80ded9bdf978a0c12e620e488c64eb35b50351b82c602b2c46a33ff03c3a31e4029d76ee18cd036a47b7f01c2e250ce4d4afbf647e06e71819038a3b4206f64
@@ -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:
@@ -40,11 +41,6 @@ jobs:
40
41
 
41
42
  - run: gem build *.gemspec
42
43
  - name: Publish to RubyGems
43
- run: |
44
- mkdir -p $HOME/.gem
45
- touch $HOME/.gem/credentials
46
- chmod 0600 $HOME/.gem/credentials
47
- printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
48
- gem push *.gem
44
+ run: gem push *.gem
49
45
  env:
50
46
  GEM_HOST_API_KEY: "Bearer ${{secrets.RUBYGEM_API_KEY}}"
data/README.md CHANGED
@@ -14,6 +14,8 @@ 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
21
  gem 'theforeman-rubocop', '~> 0.0.4'
@@ -21,26 +23,39 @@ gem 'theforeman-rubocop', '~> 0.0.4'
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,8 +1,10 @@
1
1
  inherit_from:
2
2
  - rules/base.yml
3
+ - rules/ruby_target.yml
3
4
  - rules/style.yml
4
- - rules/style_permissive.yml
5
5
  - rules/performance.yml
6
+ - rules/rails.yml
7
+ - rules/to_decide.yml
6
8
 
7
9
  AllCops:
8
10
  NewCops: disable
@@ -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,4 @@
1
+ inherit_from:
2
+ - default.yml
3
+ - rules/style_lenient.yml
4
+ - rules/minitest_lenient.yml
@@ -1,5 +1,5 @@
1
1
  module Theforeman
2
2
  module Rubocop
3
- VERSION = '0.0.4'.freeze
3
+ VERSION = '0.1.1'.freeze
4
4
  end
5
5
  end
data/minitest.yml ADDED
@@ -0,0 +1,2 @@
1
+ inherit_from:
2
+ - rules/minitest.yml
data/rules/minitest.yml CHANGED
@@ -1,2 +1,5 @@
1
1
  require:
2
2
  - rubocop-minitest
3
+
4
+ Minitest/MultipleAssertions:
5
+ Max: 5
@@ -0,0 +1,2 @@
1
+ Minitest/MultipleAssertions:
2
+ Enabled: false
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,6 +25,10 @@ Style/Documentation:
22
25
  Style/EmptyMethod:
23
26
  EnforcedStyle: expanded
24
27
 
28
+ # Enforce ruby19 style
29
+ Style/HashSyntax:
30
+ EnforcedStyle: ruby19_no_mixed_keys
31
+
25
32
  Style/TernaryParentheses:
26
33
  EnforcedStyle: require_parentheses_when_complex
27
34
 
@@ -1,7 +1,13 @@
1
+ Naming/VariableNumber:
2
+ Enabled: false
3
+
1
4
  # Don't prefer is_a? over kind_of?
2
5
  Style/ClassCheck:
3
6
  Enabled: false
4
7
 
8
+ Style/HashAsLastArrayItem:
9
+ Enabled: false
10
+
5
11
  # Support both, Ruby 1.9 hashmap and hash-rocket syntax
6
12
  Style/HashSyntax:
7
13
  EnforcedStyle: no_mixed_keys
@@ -14,6 +20,9 @@ Style/LineEndConcatenation:
14
20
  Style/StringLiterals:
15
21
  Enabled: false
16
22
 
23
+ Style/StringConcatenation:
24
+ Enabled: false
25
+
17
26
  Style/SymbolArray:
18
27
  EnforcedStyle: brackets
19
28
  MinSize: 1
@@ -0,0 +1,3 @@
1
+ # We need to decide if we want to allow releasing from CI
2
+ Gemspec/RequireMFA:
3
+ Enabled: false
@@ -1,11 +1,12 @@
1
1
  inherit_from:
2
2
  - rules/base.yml
3
+ - rules/ruby_target.yml
3
4
  - rules/style.yml
4
5
  - rules/performance.yml
5
6
  - rules/metrics.yml
6
- - rules/ruby_target.yml
7
7
  - rules/rails.yml
8
8
  - rules/minitest.yml
9
+ - rules/to_decide.yml
9
10
 
10
11
  AllCops:
11
12
  NewCops: disable
data/strictest.yml ADDED
@@ -0,0 +1,5 @@
1
+ inherit_from:
2
+ - strict.yml
3
+
4
+ AllCops:
5
+ NewCops: enable
@@ -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.4
4
+ version: 0.1.1
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-10-08 00:00:00.000000000 Z
11
+ date: 2021-12-09 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,23 +146,28 @@ 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
139
154
  - rules/base.yml
140
155
  - rules/metrics.yml
141
156
  - rules/minitest.yml
157
+ - rules/minitest_lenient.yml
142
158
  - rules/performance.yml
143
159
  - rules/rails.yml
144
160
  - rules/ruby_target.yml
145
161
  - rules/style.yml
146
- - rules/style_permissive.yml
162
+ - rules/style_lenient.yml
163
+ - rules/to_decide.yml
164
+ - strict.yml
165
+ - strictest.yml
147
166
  - theforeman-rubocop.gemspec
148
167
  homepage: https://github.com/theforeman/theforeman-rubocop
149
168
  licenses: []
150
169
  metadata: {}
151
- post_install_message:
170
+ post_install_message:
152
171
  rdoc_options: []
153
172
  require_paths:
154
173
  - lib
@@ -163,8 +182,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
163
182
  - !ruby/object:Gem::Version
164
183
  version: '0'
165
184
  requirements: []
166
- rubygems_version: 3.1.2
167
- signing_key:
185
+ rubygems_version: 3.1.6
186
+ signing_key:
168
187
  specification_version: 4
169
188
  summary: Shared Rubocop configuration for theforeman.org family of projects.
170
189
  test_files: []
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