rubocop-codeur 0.1.18 → 0.2.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: a36a82168daf0237948c930aa9ac3c902bc333ea8b4fa4d4c9e8cc60d04a2a42
4
- data.tar.gz: a568017edc3d11768131c1d9abed878f51a9044a4add67a91e7195c671d3e32b
3
+ metadata.gz: c60553e7427774219eb421a3ad856abf774951523a9c72e6d0770990ef9f2d82
4
+ data.tar.gz: e7ce247889bdac1392bba4677ee6c916a3eadc2885afcfeff46c4db5af8f8a7a
5
5
  SHA512:
6
- metadata.gz: ca8758c01b89b4357cf9a71cfae668d85327beeddb016c781fe05169727cf336c1d5460d725c2f78c9c620b6c68ea8c6ef3934ffe0ac4ded7b0aa7a27e2dcc30
7
- data.tar.gz: 2128295de2ce97b22d9cb2fabc447ac8f068ec1a717b1a41f58e9df5706589f87e306c3193e059abba38c89f36041f356de5373b0f8cb10e5d29029f64f7900e
6
+ metadata.gz: 91b702d8c2c116a0542f85daaed265b3b2b8777da1f049462d8e309e8c0633cc7f59054d856c29cd7f2f3460ad2400f59ad90c4d8f8564b2683d90e9afb86e9b
7
+ data.tar.gz: 59f8a6b58226fc72fe8a039116078b546df45d99246a02211ac4700220d40af5a122322774ad484be0c2880ba8dec958487411c091a3885274d9746864124c69
@@ -0,0 +1,34 @@
1
+ name: Quality audit
2
+
3
+ on: [pull_request]
4
+
5
+ jobs:
6
+ rubocop:
7
+ name: rubocop
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - name: Check out code
11
+ uses: actions/checkout@v1
12
+ - uses: ruby/setup-ruby@v1
13
+ with:
14
+ ruby-version: 2.7
15
+ bundler-cache: true
16
+ - name: Run Rubocop
17
+ uses: reviewdog/action-rubocop@v1
18
+ with:
19
+ github_token: ${{ secrets.github_token }}
20
+ rubocop_version: gemfile
21
+ reporter: github-pr-check
22
+
23
+ brakeman:
24
+ name: brakeman
25
+ runs-on: ubuntu-latest
26
+ steps:
27
+ - name: Check out code
28
+ uses: actions/checkout@v1
29
+ - name: Run Brakeman
30
+ uses: reviewdog/action-brakeman@v1
31
+ with:
32
+ github_token: ${{ secrets.github_token }}
33
+ brakeman_version: 5.0.4
34
+ reporter: github-pr-check
@@ -0,0 +1,41 @@
1
+ name: Test
2
+
3
+ on: [pull_request]
4
+
5
+ env:
6
+ RAILS_ENV: test
7
+
8
+ jobs:
9
+ test:
10
+
11
+ runs-on: ubuntu-latest
12
+
13
+ strategy:
14
+ matrix:
15
+ ruby: ['2.7', '3.0']
16
+
17
+ steps:
18
+ - uses: actions/checkout@v2
19
+
20
+ - name: Set up Ruby ${{ matrix.ruby }}
21
+ uses: ruby/setup-ruby@v1
22
+ with:
23
+ ruby-version: ${{ matrix.ruby }}
24
+ bundler-cache: true
25
+
26
+ - name: Run tests
27
+ run: bin/rake test
28
+ env:
29
+ COVERAGE: true
30
+
31
+ - name: Simplecov Report
32
+ uses: aki77/simplecov-report-action@v1
33
+ with:
34
+ token: ${{ secrets.GITHUB_TOKEN }}
35
+ failedThreshold: 100
36
+
37
+ - name: Upload coverage
38
+ uses: actions/upload-artifact@v1
39
+ with:
40
+ name: Coverage
41
+ path: coverage
data/.gitignore ADDED
@@ -0,0 +1,10 @@
1
+ .DS_Store
2
+ /spec/
3
+ /.bundle/
4
+ /.yardoc
5
+ /_yardoc/
6
+ /coverage/
7
+ /doc/
8
+ /pkg/
9
+ /spec/reports/
10
+ /tmp/
data/.rubocop.yml ADDED
@@ -0,0 +1,9 @@
1
+ AllCops:
2
+ NewCops: enable
3
+
4
+ Naming/FileName:
5
+ Exclude:
6
+ - lib/rubocop-codeur.rb
7
+
8
+ Gemspec/RequireMFA:
9
+ Enabled: false
data/Gemfile ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
5
+
6
+ # Specify your gem's dependencies in rubocop-codeur.gemspec
7
+ gemspec
8
+
9
+ gem 'minitest', '~> 5.0'
10
+ gem 'rake', '~> 12.0'
11
+ gem 'rubocop-minitest', '~> 0.17'
12
+ gem 'simplecov', require: false
data/Gemfile.lock ADDED
@@ -0,0 +1,79 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ rubocop-codeur (0.2.0)
5
+ rubocop (~> 1.25)
6
+ rubocop-github (~> 0.17)
7
+ rubocop-minitest (~> 0.10, >= 0.10.2)
8
+ rubocop-performance (~> 1.9, >= 1.9.2)
9
+ rubocop-rails (~> 2.9, >= 2.9.1)
10
+
11
+ GEM
12
+ remote: https://rubygems.org/
13
+ specs:
14
+ activesupport (7.0.1)
15
+ concurrent-ruby (~> 1.0, >= 1.0.2)
16
+ i18n (>= 1.6, < 2)
17
+ minitest (>= 5.1)
18
+ tzinfo (~> 2.0)
19
+ ast (2.4.2)
20
+ concurrent-ruby (1.1.9)
21
+ docile (1.4.0)
22
+ i18n (1.9.0)
23
+ concurrent-ruby (~> 1.0)
24
+ minitest (5.15.0)
25
+ parallel (1.21.0)
26
+ parser (3.1.0.0)
27
+ ast (~> 2.4.1)
28
+ rack (2.2.3)
29
+ rainbow (3.1.1)
30
+ rake (12.3.3)
31
+ regexp_parser (2.2.0)
32
+ rexml (3.2.5)
33
+ rubocop (1.25.0)
34
+ parallel (~> 1.10)
35
+ parser (>= 3.1.0.0)
36
+ rainbow (>= 2.2.2, < 4.0)
37
+ regexp_parser (>= 1.8, < 3.0)
38
+ rexml
39
+ rubocop-ast (>= 1.15.1, < 2.0)
40
+ ruby-progressbar (~> 1.7)
41
+ unicode-display_width (>= 1.4.0, < 3.0)
42
+ rubocop-ast (1.15.1)
43
+ parser (>= 3.0.1.1)
44
+ rubocop-github (0.17.0)
45
+ rubocop
46
+ rubocop-performance
47
+ rubocop-rails
48
+ rubocop-minitest (0.17.0)
49
+ rubocop (>= 0.90, < 2.0)
50
+ rubocop-performance (1.13.2)
51
+ rubocop (>= 1.7.0, < 2.0)
52
+ rubocop-ast (>= 0.4.0)
53
+ rubocop-rails (2.13.2)
54
+ activesupport (>= 4.2.0)
55
+ rack (>= 1.1)
56
+ rubocop (>= 1.7.0, < 2.0)
57
+ ruby-progressbar (1.11.0)
58
+ simplecov (0.21.2)
59
+ docile (~> 1.1)
60
+ simplecov-html (~> 0.11)
61
+ simplecov_json_formatter (~> 0.1)
62
+ simplecov-html (0.12.3)
63
+ simplecov_json_formatter (0.1.3)
64
+ tzinfo (2.0.4)
65
+ concurrent-ruby (~> 1.0)
66
+ unicode-display_width (2.1.0)
67
+
68
+ PLATFORMS
69
+ ruby
70
+
71
+ DEPENDENCIES
72
+ minitest (~> 5.0)
73
+ rake (~> 12.0)
74
+ rubocop-codeur!
75
+ rubocop-minitest (~> 0.17)
76
+ simplecov
77
+
78
+ BUNDLED WITH
79
+ 2.1.4
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright 2021 Codeur SARL
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Rubocop Codeur
1
+ # RuboCop Codeur
2
2
  Shared rubocop config gem for every Ruby projects at Codeur SARL
3
3
 
4
4
  ## Installation
@@ -25,9 +25,12 @@ Then run:
25
25
  `bundle exec rubocop`
26
26
 
27
27
  You don't need to include rubocop directly in your application's dependencies.
28
- `rubocop-codeur` will include `rubocop`, `rubocop-minitest`, `rubocop-performance` and `rubocop-rails` dependencies.
28
+ `rubocop-codeur` will include `rubocop`, `rubocop-github`, `rubocop-minitest`,
29
+ `rubocop-performance` and `rubocop-rails` dependencies.
29
30
 
30
- It might be necessary to override style rules set in this gem for some projects or to add specific ones. Rule inheritance provided by Rubocop works like the following:
31
+ It might be necessary to override style rules set in this gem for some projects
32
+ or to add specific ones. Rule inheritance provided by RuboCop works like the
33
+ following:
31
34
  `inherit_gem → inherit_from → local rules`
32
35
 
33
36
  For example:
data/Rakefile ADDED
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rake/testtask'
5
+
6
+ Rake::TestTask.new(:test) do |t|
7
+ t.libs << 'test'
8
+ t.libs << 'lib'
9
+ t.test_files = FileList['test/**/*_test.rb']
10
+ end
11
+
12
+ task default: :test
13
+
14
+ desc 'Generate a new cop with a template'
15
+ task :new_cop, [:cop] do |_task, args|
16
+ require 'rubocop'
17
+
18
+ cop_name = args.fetch(:cop) do
19
+ warn 'usage: bundle exec rake new_cop[Department/Name]'
20
+ exit!
21
+ end
22
+
23
+ generator = RuboCop::Cop::Generator.new(cop_name)
24
+
25
+ generator.write_source
26
+ generator.write_spec
27
+ generator.inject_require(root_file_path: 'lib/rubocop/cop/codeur_cops.rb')
28
+ generator.inject_config(config_file_path: 'config/default.yml')
29
+
30
+ puts generator.todo
31
+ end
data/bin/console ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'bundler/setup'
5
+ require 'rubocop/codeur'
6
+
7
+ # You can add fixtures and/or initialization code here to make experimenting
8
+ # with your gem easier. You can also use a different console, if you like.
9
+
10
+ # (If you use this, don't forget to add pry to your Gemfile!)
11
+ # require "pry"
12
+ # Pry.start
13
+
14
+ require 'irb'
15
+ IRB.start(__FILE__)
data/bin/rake ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rake' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require 'pathname'
12
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile',
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path('bundle', __dir__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require 'rubygems'
27
+ require 'bundler/setup'
28
+
29
+ load Gem.bin_path('rake', 'rake')
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,13 @@
1
+ Codeur/RailsAppPatterns:
2
+ Description: 'Allows or forbids patterns in app directories'
3
+ Enabled: pending
4
+ VersionAdded: '0.2.0'
5
+ AllowedPatterns: []
6
+ ForbiddenPatterns: []
7
+
8
+ Codeur/RailsAvoidInstanceMethodsInHelpers:
9
+ Description: 'Forbids instance methods in Rails helpers'
10
+ Enabled: pending
11
+ VersionAdded: '0.2.0'
12
+ Include:
13
+ - app/helpers/**/*.rb
data/default.yml CHANGED
@@ -1,8 +1,13 @@
1
1
  require:
2
+ - rubocop-codeur
2
3
  - rubocop-minitest
3
4
  - rubocop-performance
4
5
  - rubocop-rails
5
6
 
7
+ inherit_gem:
8
+ rubocop-github:
9
+ - config/default.yml
10
+
6
11
  AllCops:
7
12
  Exclude:
8
13
  - 'db/schema.rb'
@@ -20,6 +25,16 @@ AllCops:
20
25
  Rails:
21
26
  Enabled: true
22
27
 
28
+ Codeur/RailsAppPatterns:
29
+ Enabled: true
30
+ ForbiddenPatterns:
31
+ - presenters
32
+ - view_objects
33
+ - modules
34
+
35
+ Codeur/RailsAvoidInstanceMethodsInHelpers:
36
+ Enabled: true
37
+
23
38
  Layout/AccessModifierIndentation:
24
39
  EnforcedStyle: outdent
25
40
  IndentationWidth: 2
@@ -31,18 +46,20 @@ Layout/ClassStructure:
31
46
  Enabled: true
32
47
  AutoCorrect: false
33
48
  ExpectedOrder:
49
+ - devise
34
50
  - module_inclusion
35
51
  - constants
36
52
  - attributes
53
+ - has_ancestry
37
54
  - belongs_to
38
55
  - has_many
39
56
  - has_one
40
- - accepts_nested_attributes_for
41
- - has_attached_file
57
+ - attachments
42
58
  - public_delegate
59
+ - class_macros
43
60
  - callbacks
44
61
  - state_machine
45
- - ransack_alias
62
+ - aasm
46
63
  - scope
47
64
  - default_scope
48
65
  - validations
@@ -59,20 +76,31 @@ Layout/ClassStructure:
59
76
  - include
60
77
  - prepend
61
78
  - extend
79
+ attachments:
80
+ - has_one_attached
81
+ - has_many_attached
82
+ - has_attached_file
62
83
  attributes:
63
- - acts_as_voter
64
84
  - attr_accessor
65
85
  - attr_reader
66
86
  - attr_writer
67
87
  - attr_readonly
68
- - devise
69
88
  - emojify
70
89
  - enum
71
- - has_ancestry
72
90
  - monetize
73
- - pg_search_scope
74
91
  - serialize
75
92
  - has_secure_token
93
+ - alias_attribute
94
+ - slug
95
+ class_macros:
96
+ - acts_as_voter
97
+ - pg_search_scope
98
+ - counter_culture
99
+ - accepts_nested_attributes_for
100
+ - paginates_per
101
+ - ransack_alias
102
+ - ransacker
103
+ - ratyrate_rater
76
104
  callbacks:
77
105
  - before_validation
78
106
  - after_validation
@@ -94,10 +122,6 @@ Layout/ClassStructure:
94
122
  - validates
95
123
  - validate
96
124
 
97
- Lint/DuplicateMethods:
98
- Exclude:
99
- - 'db/migrate/*'
100
-
101
125
  Layout/FirstArrayElementIndentation:
102
126
  EnforcedStyle: consistent
103
127
 
@@ -121,6 +145,13 @@ Layout/ParameterAlignment:
121
145
  EnforcedStyle: with_fixed_indentation
122
146
  IndentationWidth: 2
123
147
 
148
+ Lint/DuplicateMethods:
149
+ Exclude:
150
+ - 'db/migrate/*'
151
+
152
+ Lint/MissingSuper:
153
+ Enabled: false
154
+
124
155
  Lint/RaiseException:
125
156
  Enabled: true
126
157
 
@@ -247,6 +278,9 @@ Style/NestedTernaryOperator:
247
278
  Style/NumericPredicate:
248
279
  Enabled: false
249
280
 
281
+ Style/StringLiterals:
282
+ EnforcedStyle: single_quotes
283
+
250
284
  Style/SymbolArray:
251
285
  MinSize: 7
252
286
 
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ # The original code is from https://github.com/rubocop/rubocop-rspec/blob/master/lib/rubocop/rspec/inject.rb
4
+ # See https://github.com/rubocop/rubocop-rspec/blob/master/MIT-LICENSE.md
5
+ module RuboCop
6
+ module Codeur
7
+ # Because RuboCop doesn't yet support plugins, we have to monkey patch in a
8
+ # bit of our configuration.
9
+ module Inject
10
+ def self.defaults!
11
+ path = CONFIG_DEFAULT.to_s
12
+ hash = ConfigLoader.send(:load_yaml_configuration, path)
13
+ config = Config.new(hash, path).tap(&:make_excludes_absolute)
14
+ puts "configuration from #{path}" if ConfigLoader.debug?
15
+ config = ConfigLoader.merge_with_default(config, path)
16
+ ConfigLoader.instance_variable_set(:@default_configuration, config)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Codeur
5
+ VERSION = '0.2.0'
6
+ end
7
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rubocop/codeur/version'
4
+ require 'yaml'
5
+
6
+ module RuboCop
7
+ # RuboCop Codeur project namespace
8
+ module Codeur
9
+ class Error < StandardError; end
10
+ # Your code goes here...
11
+ PROJECT_ROOT = Pathname.new(__dir__).parent.parent.expand_path.freeze
12
+ CONFIG_DEFAULT = PROJECT_ROOT.join('config', 'default.yml').freeze
13
+ CONFIG = YAML.safe_load(CONFIG_DEFAULT.read).freeze
14
+
15
+ private_constant(:CONFIG_DEFAULT, :PROJECT_ROOT)
16
+ end
17
+ end
@@ -0,0 +1,81 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Codeur
6
+ # This cop makes sure that Rails app only uses patterns (app subdirectories)
7
+ # defined in Cop config.
8
+ #
9
+ # @example ForbiddenPatterns: [presenters, view_objects, uploaders, modules]
10
+ # # bad
11
+ # app/presenters/order_presenter.rb
12
+ #
13
+ # # bad
14
+ # app/modules/stuffy.rb
15
+ #
16
+ # # good
17
+ # app/view_components/order_component.rb
18
+ #
19
+ # # good
20
+ # app/models/concerns/stuffy.rb
21
+ #
22
+ # @example AllowedPatterns: [assets, controllers, javascript, jobs, mailers, models, views]
23
+ # # bad
24
+ # app/controller/some_controller.rb
25
+ #
26
+ # # good
27
+ # app/controllers/some_controller.rb
28
+ #
29
+ class RailsAppPatterns < Base
30
+ MSG_FORBIDDEN = '`%<pattern>s` are forbidden.'
31
+ MSG_NOT_ALLOWED = '`%<pattern>s` are not allowed. Allowed patterns are: %<allowed_patterns>s.'
32
+
33
+ def on_new_investigation
34
+ file_path = processed_source.file_path
35
+ return if config.file_to_exclude?(file_path)
36
+
37
+ for_bad_patterns(file_path) { |msg| add_global_offense(msg, severity: :warning) }
38
+ end
39
+
40
+ private
41
+
42
+ def for_bad_patterns(file_path)
43
+ pattern = pattern_from_path(file_path)
44
+ return if pattern.nil?
45
+
46
+ if pattern_forbidden?(pattern)
47
+ msg = format(MSG_FORBIDDEN, pattern: pattern)
48
+ elsif pattern_not_allowed?(pattern)
49
+ msg = format(MSG_NOT_ALLOWED,
50
+ pattern: pattern,
51
+ allowed_patterns: allowed_patterns.map { |p| "`#{p}`" }.join(', '))
52
+ end
53
+
54
+ yield msg if msg
55
+ end
56
+
57
+ def pattern_from_path(path)
58
+ return nil unless path.match(%r{/app/(?<pattern>.+)/.+})
59
+
60
+ Regexp.last_match(:pattern)
61
+ end
62
+
63
+ def pattern_forbidden?(pattern)
64
+ forbidden_patterns.any? && forbidden_patterns.include?(pattern)
65
+ end
66
+
67
+ def pattern_not_allowed?(pattern)
68
+ allowed_patterns.any? && !allowed_patterns.include?(pattern)
69
+ end
70
+
71
+ def allowed_patterns
72
+ cop_config['AllowedPatterns'] || []
73
+ end
74
+
75
+ def forbidden_patterns
76
+ cop_config['ForbiddenPatterns'] || []
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Codeur
6
+ # This cop makes sure that Rails helpers only uses class methods in order
7
+ # to be able to use them in the test, views or from anywhere else.
8
+ # ApplicationHelper is excluded from this rule by default.
9
+ #
10
+ # @example
11
+ # # bad
12
+ # module CoolHelper
13
+ # def foobar
14
+ # # ...
15
+ # end
16
+ # end
17
+ #
18
+ # # good
19
+ # module CoolHelper
20
+ # def self.foobar
21
+ # # ...
22
+ # end
23
+ # end
24
+ #
25
+ class RailsAvoidInstanceMethodsInHelpers < Base
26
+ MSG = 'Prefer class methods in helpers.'
27
+
28
+ def on_def(node)
29
+ # NOTE: :sclass node is a "class << self" node
30
+ return if node.parent.sclass_type?
31
+
32
+ add_offense(node)
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'codeur/rails_app_patterns'
4
+ require_relative 'codeur/rails_avoid_instance_methods_in_helpers'
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rubocop'
4
+
5
+ require_relative 'rubocop/codeur'
6
+ require_relative 'rubocop/codeur/version'
7
+ require_relative 'rubocop/codeur/inject'
8
+
9
+ RuboCop::Codeur::Inject.defaults!
10
+
11
+ require_relative 'rubocop/cop/codeur_cops'
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lib/rubocop/codeur/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'rubocop-codeur'
7
+ spec.version = RuboCop::Codeur::VERSION
8
+ spec.authors = ['Codeur']
9
+ spec.email = ['dev@codeur.com']
10
+
11
+ spec.summary = 'Codeur rubocop config gem'
12
+ spec.description = 'Shared rubocop config gem for every Ruby projects at Codeur SARL'
13
+ spec.homepage = 'https://github.com/codeur/rubocop-codeur'
14
+ spec.license = 'MIT'
15
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.6.0')
16
+
17
+ # Specify which files should be added to the gem when it is released.
18
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
19
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
20
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
21
+ end
22
+
23
+ spec.add_dependency 'rubocop', '~> 1.25'
24
+ spec.add_dependency 'rubocop-github', '~> 0.17'
25
+ spec.add_dependency 'rubocop-minitest', '~> 0.10', '>=0.10.2'
26
+ spec.add_dependency 'rubocop-performance', '~> 1.9', '>= 1.9.2'
27
+ spec.add_dependency 'rubocop-rails', '~> 2.9', '>= 2.9.1'
28
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop-codeur
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.18
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
- - Dev-team Codeur
7
+ - Codeur
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-28 00:00:00.000000000 Z
11
+ date: 2022-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -16,14 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.9.1
19
+ version: '1.25'
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.9.1
26
+ version: '1.25'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rubocop-github
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.17'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.17'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rubocop-minitest
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -91,32 +105,48 @@ executables: []
91
105
  extensions: []
92
106
  extra_rdoc_files: []
93
107
  files:
94
- - MIT-LICENSE
108
+ - ".github/workflows/quality.yml"
109
+ - ".github/workflows/test.yml"
110
+ - ".gitignore"
111
+ - ".rubocop.yml"
112
+ - Gemfile
113
+ - Gemfile.lock
114
+ - LICENSE.txt
95
115
  - README.md
116
+ - Rakefile
117
+ - bin/console
118
+ - bin/rake
119
+ - bin/setup
120
+ - config/default.yml
96
121
  - default.yml
97
- - lib/rubocop_codeur.rb
98
- - lib/rubocop_codeur/version.rb
122
+ - lib/rubocop-codeur.rb
123
+ - lib/rubocop/codeur.rb
124
+ - lib/rubocop/codeur/inject.rb
125
+ - lib/rubocop/codeur/version.rb
126
+ - lib/rubocop/cop/codeur/rails_app_patterns.rb
127
+ - lib/rubocop/cop/codeur/rails_avoid_instance_methods_in_helpers.rb
128
+ - lib/rubocop/cop/codeur_cops.rb
129
+ - rubocop-codeur.gemspec
99
130
  homepage: https://github.com/codeur/rubocop-codeur
100
131
  licenses:
101
132
  - MIT
102
- metadata:
103
- homepage_uri: https://github.com/codeur/rubocop-codeur
133
+ metadata: {}
104
134
  post_install_message:
105
135
  rdoc_options: []
106
136
  require_paths:
107
137
  - lib
108
138
  required_ruby_version: !ruby/object:Gem::Requirement
109
139
  requirements:
110
- - - "~>"
140
+ - - ">="
111
141
  - !ruby/object:Gem::Version
112
- version: '2.6'
142
+ version: 2.6.0
113
143
  required_rubygems_version: !ruby/object:Gem::Requirement
114
144
  requirements:
115
145
  - - ">="
116
146
  - !ruby/object:Gem::Version
117
147
  version: '0'
118
148
  requirements: []
119
- rubygems_version: 3.0.3
149
+ rubygems_version: 3.1.4
120
150
  signing_key:
121
151
  specification_version: 4
122
152
  summary: Codeur rubocop config gem
data/MIT-LICENSE DELETED
@@ -1,20 +0,0 @@
1
- Copyright 2021 Codeur SARL
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RubocopCodeur
4
- VERSION = '0.1.18'
5
- end
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rubocop_codeur/version'
4
-
5
- module RubocopCodeur
6
- end