ezcater_rubocop 2.0.0 → 2.4.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: 1436184ef303d8ee4af5050b33caa9872e1b233e1c7ce4411f7ceeb9355600ad
4
- data.tar.gz: 21f8449c813f89d22e94e108dd4d0376ade3aaca8aab49bac4a2f22c2dfba853
3
+ metadata.gz: 2096c91ae045203c587668c5973b89b1b873645d0f0d1d95641eb556dd536dff
4
+ data.tar.gz: a989856aa682768b8a3e9c47270dc441cd6743420cf8884451b53579a61c6c1f
5
5
  SHA512:
6
- metadata.gz: 4303c34cab47b80bc2982b134b41664af92c8e28a00aec643072791533db3d15727edbb72bea60c2fc1336d9aca8a87b272bf920b9f3b3fac386da9210f32fb4
7
- data.tar.gz: bc3c02d74a88f087605de81e130cbb74672c6884a36d49601104f3b1297d8caa42469d7d3a54c75b51bd87d3479611951fe666fad5ff3d1595e0cfe4a3005ba6
6
+ metadata.gz: 772cc5d23fa87784f870effdc91bccf4bdb12665c017b7f3a845f38c572c46a3232ad2acddd89e48be6f6566144e63b6693c4a78638e18e1231eb0086c8bfea9
7
+ data.tar.gz: 7396c095538e84ca0984ecec837d18164a0bc3fdd3b2a11b5dcf8ae586f926100518ab78bb757a10f998c0b3c819d0e62a59025561653877e6f8829aa4a013ce
data/.github/CODEOWNERS CHANGED
@@ -1 +1 @@
1
- * @agrobbin @aprescott @tjwp
1
+ * @ezcater/ruby-style-group
data/CHANGELOG.md CHANGED
@@ -6,6 +6,21 @@ This gem is moving onto its own [Semantic Versioning](https://semver.org/) schem
6
6
 
7
7
  Prior to v1.0.0 this gem was versioned based on the `MAJOR`.`MINOR` version of RuboCop. The first release of the ezcater_rubocop gem was `v0.49.0`.
8
8
 
9
+ ## v2.4.0
10
+ - Fix `FeatureFlagActive` cop so that it allows feature flag names to be variables in addition to strings.
11
+ - Add check to `FeatureFlagActive` that the first parameter is a string or a variable, and use the appropriate messaging.
12
+
13
+ ## v2.3.0
14
+ - Add `FeatureFlagActive` cop. This provides confidence that upgrading to `ezcater_feature_flag-client` v2.0.0, which
15
+ contains breaking API changes, can be done safely.
16
+
17
+ ## v2.2.0
18
+ - Require Ruby 2.6 or later.
19
+ - Set `TargetRubyVersion` to 2.6 in `rubocop_gem` configuration.
20
+
21
+ ## v2.1.0
22
+ - Enable `Rails/SaveBang` with `AllowImplicitReturn: false`, and with autocorrection disabled.
23
+
9
24
  ## v2.0.0
10
25
  - Update to `rubocop` v0.81.0, `rubocop-rspec` v1.38.1 and `rubocop-rails` v2.5.2.
11
26
  - This is being released as a major update because cops have been renamed so this is unlikely to be
data/conf/rubocop_gem.yml CHANGED
@@ -2,6 +2,7 @@ inherit_from:
2
2
  - ../conf/rubocop.yml
3
3
 
4
4
  AllCops:
5
+ TargetRubyVersion: 2.6
5
6
  Exclude:
6
7
  - 'vendor/bundle/**/*'
7
8
  - 'gemfiles/vendor/**/*'
@@ -47,6 +47,11 @@ Rails/UnknownEnv:
47
47
  - staging
48
48
  - production
49
49
 
50
+ Rails/SaveBang:
51
+ Enabled: true
52
+ AllowImplicitReturn: false
53
+ AutoCorrect: False
54
+
50
55
  Ezcater/RailsTopLevelSqlExecute:
51
56
  Description: 'Use `execute` instead of `ActiveRecord::Base.connection.execute` in migrations.'
52
57
  Enabled: true
data/config/default.yml CHANGED
@@ -19,6 +19,10 @@ Ezcater/DirectEnvCheck:
19
19
  Description: 'Enforce the use of `Rails.configuration.x.<foo>` instead of checking `ENV`.'
20
20
  Enabled: false
21
21
 
22
+ Ezcater/FeatureFlagActive:
23
+ Description: 'Enforce the proper arguments are given to EzcaterFeatureFlag.active?'
24
+ Enabled: true
25
+
22
26
  Ezcater/RspecDotNotSelfDot:
23
27
  Description: 'Enforce ".<class method>" instead of "self.<class method>" for example group description.'
24
28
  Enabled: true
@@ -42,6 +42,8 @@ Gem::Specification.new do |spec|
42
42
  spec.executables << "circle_rubocop.rb"
43
43
  spec.require_paths = ["lib"]
44
44
 
45
+ spec.required_ruby_version = ">= 2.6"
46
+
45
47
  spec.add_development_dependency "bundler", "~> 2.1"
46
48
  spec.add_development_dependency "pry-byebug"
47
49
  spec.add_development_dependency "rake", "~> 12.3"
@@ -16,6 +16,7 @@ config = RuboCop::ConfigLoader.merge_with_default(config, path)
16
16
  RuboCop::ConfigLoader.instance_variable_set(:@default_configuration, config)
17
17
 
18
18
  require "rubocop/cop/ezcater/direct_env_check"
19
+ require "rubocop/cop/ezcater/feature_flag_active"
19
20
  require "rubocop/cop/ezcater/graphql_fields_naming"
20
21
  require "rubocop/cop/ezcater/rails_configuration"
21
22
  require "rubocop/cop/ezcater/rails_env"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EzcaterRubocop
4
- VERSION = "2.0.0"
4
+ VERSION = "2.4.0"
5
5
  end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Ezcater
6
+ # Use `EzcaterFeatureFlag.active?` with a tracking_id or array of identifiers
7
+ #
8
+ # @example
9
+ #
10
+ # # good
11
+ # EzFF.active?("FlagName", tracking_id: "user:12345")
12
+ # EzFF.active?("FlagName", identifiers: ["user:12345", "user:23456"])
13
+ # EzFF.active?(defined_flag_name_var, tracking_id: "brand:12345")
14
+ # EzFF.active?(@flag_name_ivar, tracking_id: "brand:12345")
15
+ #
16
+ # # bad
17
+ # EzFF.active?("FlagName")
18
+ # EzFF.active?(defined_flag_name_var)
19
+ # EzFF.active?(@flag_name_ivar)
20
+
21
+ class FeatureFlagActive < Cop
22
+ MSG = "`EzFF.active?` must be called with at least one of `tracking_id` or `identifiers`"
23
+ FIRST_PARAM_MSG = "The first argument to `EzFF.active?` must be a string or predefined variable"
24
+
25
+ def_node_matcher :ezff_active_one_arg, <<-PATTERN
26
+ (send
27
+ (_ _ {:EzFF :EzcaterFeatureFlag}) :active? ${str lvar ivar})
28
+ PATTERN
29
+
30
+ def_node_matcher :args_matcher, <<-PATTERN
31
+ (send
32
+ (_ _ {:EzFF :EzcaterFeatureFlag}) :active?
33
+ ${str lvar ivar}
34
+ (_
35
+ (pair
36
+ (sym {:tracking_id :identifiers})
37
+ _)
38
+ ...))
39
+ PATTERN
40
+
41
+ def_node_matcher :first_param_good, <<-PATTERN
42
+ (send
43
+ (_ _ {:EzFF :EzcaterFeatureFlag}) :active? ${str lvar ivar} ...)
44
+ PATTERN
45
+
46
+ def_node_matcher :method_call_matcher, <<-PATTERN
47
+ (send
48
+ (_ _ {:EzFF :EzcaterFeatureFlag}) :active? ...)
49
+ PATTERN
50
+
51
+ def on_send(node)
52
+ return unless method_call_matcher(node)
53
+
54
+ if !first_param_good(node)
55
+ add_offense(node, location: :expression, message: FIRST_PARAM_MSG)
56
+ end
57
+
58
+ if ezff_active_one_arg(node) || !args_matcher(node)
59
+ add_offense(node, location: :expression, message: MSG)
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ezcater_rubocop
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ezCater, Inc
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-29 00:00:00.000000000 Z
11
+ date: 2021-05-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -173,6 +173,7 @@ files:
173
173
  - lib/ezcater_rubocop.rb
174
174
  - lib/ezcater_rubocop/version.rb
175
175
  - lib/rubocop/cop/ezcater/direct_env_check.rb
176
+ - lib/rubocop/cop/ezcater/feature_flag_active.rb
176
177
  - lib/rubocop/cop/ezcater/graphql_fields_naming.rb
177
178
  - lib/rubocop/cop/ezcater/rails_configuration.rb
178
179
  - lib/rubocop/cop/ezcater/rails_env.rb
@@ -199,14 +200,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
199
200
  requirements:
200
201
  - - ">="
201
202
  - !ruby/object:Gem::Version
202
- version: '0'
203
+ version: '2.6'
203
204
  required_rubygems_version: !ruby/object:Gem::Requirement
204
205
  requirements:
205
206
  - - ">="
206
207
  - !ruby/object:Gem::Version
207
208
  version: '0'
208
209
  requirements: []
209
- rubygems_version: 3.0.6
210
+ rubygems_version: 3.0.3
210
211
  signing_key:
211
212
  specification_version: 4
212
213
  summary: ezCater custom cops and shared configuration