ezcater_rubocop 0.49.0.rc0
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 +7 -0
- data/.gitignore +12 -0
- data/.rspec +3 -0
- data/.rubocop.yml +27 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +8 -0
- data/CHANGELOG.md +7 -0
- data/Gemfile +6 -0
- data/LICENSE.txt +21 -0
- data/README.md +66 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/config/default.yml +16 -0
- data/ezcater_rubocop.gemspec +41 -0
- data/lib/ezcater_rubocop.rb +17 -0
- data/lib/ezcater_rubocop/version.rb +3 -0
- data/lib/rubocop/cop/ezcater/rspec_dot_not_self_dot.rb +44 -0
- data/lib/rubocop/cop/ezcater/rspec_require_feature_flag_mock.rb +52 -0
- data/lib/rubocop/cop/ezcater/style_dig.rb +67 -0
- data/lib/rubocop/rspec/language/each_selector.rb +13 -0
- metadata +150 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 243fe8dda3fbb6400334541d005458302781fa18
|
|
4
|
+
data.tar.gz: e308cca3c409fedfc1495ea97acf255b3cf25fb0
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: df2042d9d1f7a3cf3531f5cfd56a405d65563c99158a7c8dfbb099f8ad5adf2bca7d26f406c3e93960d618a239c151e2b503727d792b2b3376f4da7dc3532391
|
|
7
|
+
data.tar.gz: 0c8e05a4ba6ffb5b2f968e04957370b171f1e0da2f3e21a2abe49976029686a9ea616efd291944a19bb77ad03576f7727c8e1f1cca3580a36693645f0441ff2d
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.rubocop.yml
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
AllCops:
|
|
2
|
+
DisplayCopNames: true
|
|
3
|
+
|
|
4
|
+
Metrics/AbcSize:
|
|
5
|
+
Enabled: false
|
|
6
|
+
|
|
7
|
+
Metrics/BlockLength:
|
|
8
|
+
Exclude:
|
|
9
|
+
- "*.gemspec"
|
|
10
|
+
- "spec/**/*.rb"
|
|
11
|
+
|
|
12
|
+
Metrics/MethodLength:
|
|
13
|
+
Enabled: true
|
|
14
|
+
CountComments: false
|
|
15
|
+
Max: 25
|
|
16
|
+
|
|
17
|
+
Metrics/LineLength:
|
|
18
|
+
Max: 120
|
|
19
|
+
|
|
20
|
+
Style/FrozenStringLiteralComment:
|
|
21
|
+
Enabled: false
|
|
22
|
+
|
|
23
|
+
Style/Documentation:
|
|
24
|
+
Enabled: false
|
|
25
|
+
|
|
26
|
+
Style/StringLiterals:
|
|
27
|
+
EnforcedStyle: double_quotes
|
data/.ruby-gemset
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ezcater_rubocop
|
data/.ruby-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.3.3
|
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2017 ezCater, Inc
|
|
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
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# ezcater_rubocop
|
|
2
|
+
|
|
3
|
+
ezCater custom cops, and eventually shared rubocop configuration.
|
|
4
|
+
|
|
5
|
+
[RuboCop](https://github.com/bbatsov/rubocop) is a static code analyzer that
|
|
6
|
+
can enforce style conventions as well as identify common problems.
|
|
7
|
+
|
|
8
|
+
## Installation
|
|
9
|
+
|
|
10
|
+
Add this line to your application's Gemfile:
|
|
11
|
+
|
|
12
|
+
```ruby
|
|
13
|
+
group :development do
|
|
14
|
+
gem "ezcater_rubocop", require: false
|
|
15
|
+
end
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
And then execute:
|
|
19
|
+
|
|
20
|
+
$ bundle install
|
|
21
|
+
|
|
22
|
+
Or install it yourself as:
|
|
23
|
+
|
|
24
|
+
$ gem install ezcater_rubocop
|
|
25
|
+
|
|
26
|
+
## Usage
|
|
27
|
+
|
|
28
|
+
Run `rubocop` for an entire project:
|
|
29
|
+
|
|
30
|
+
$ bundle exec rubocop
|
|
31
|
+
|
|
32
|
+
See the `rubocop` command-line for additional options including auto-generating
|
|
33
|
+
configuration for existing offenses and auto-correction.
|
|
34
|
+
|
|
35
|
+
## Versioning
|
|
36
|
+
|
|
37
|
+
This gem is versioned based on the MAJOR.MINOR version of `rubocop`. The first
|
|
38
|
+
release of the `ezcater_rubocop` gem was v0.49.0.
|
|
39
|
+
|
|
40
|
+
The patch version for this gem does _not_ correspond to the patch version of
|
|
41
|
+
`rubocop`. The patch version for this gem will change any time that one of its
|
|
42
|
+
configurations is modified _or_ its dependency on `rubocop` is changed to require
|
|
43
|
+
a different patch version.
|
|
44
|
+
|
|
45
|
+
This gem also includes a dependency on `rubocop-rspec` that will be updated to
|
|
46
|
+
the latest compatible version each time that the MAJOR.MINOR version of `rubocop`
|
|
47
|
+
is updated.
|
|
48
|
+
|
|
49
|
+
## Custom Cops
|
|
50
|
+
1. [RspecDotNotSelfDot](https://github.com/ezcater/ezcater_rubocop/blob/master/lib/rubocop/cop/ezcater/rspec_dot_not_self_dot.rb) - Enforce ".<class method>" instead of "self.<class method>" for example group description.
|
|
51
|
+
1. [RspecRequireFeatureFlagMock](https://github.com/ezcater/ezcater_rubocop/blob/master/lib/rubocop/cop/ezcater/rspec_require_feature_flag_mock.rb) - Enforces consumers to user custom `mock_feature_flag` helpers when writing tests that require turning `FeatureFlag` functionality on and off.
|
|
52
|
+
1. [StyleDig](https://github.com/ezcater/ezcater_rubocop/blob/master/lib/rubocop/cop/ezcater/style_dig.rb) - Recommend `dig` for deeply nested access.
|
|
53
|
+
|
|
54
|
+
## Development
|
|
55
|
+
|
|
56
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
|
57
|
+
|
|
58
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
|
59
|
+
|
|
60
|
+
## Contributing
|
|
61
|
+
|
|
62
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/ezcater/ezcater_rubocop.
|
|
63
|
+
|
|
64
|
+
## License
|
|
65
|
+
|
|
66
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
data/bin/console
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require "bundler/setup"
|
|
4
|
+
require "ezcater_rubocop"
|
|
5
|
+
|
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
|
8
|
+
|
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
|
10
|
+
# require "pry"
|
|
11
|
+
# Pry.start
|
|
12
|
+
|
|
13
|
+
require "irb"
|
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
data/config/default.yml
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
Ezcater/RspecDotNotSelfDot:
|
|
2
|
+
Description: 'Enforce ".<class method>" instead of "self.<class method>" for example group description.'
|
|
3
|
+
Enabled: true
|
|
4
|
+
Include:
|
|
5
|
+
- '**/*_spec.rb'
|
|
6
|
+
|
|
7
|
+
Ezcater/RspecRequireFeatureFlagMock:
|
|
8
|
+
Description: 'Enforce use of `mock_feature_flag` helpers instead of mocking `FeatureFlag.is_active?` directly.'
|
|
9
|
+
Enabled: true
|
|
10
|
+
Include:
|
|
11
|
+
- '**/*_spec.rb'
|
|
12
|
+
|
|
13
|
+
Ezcater/StyleDig:
|
|
14
|
+
Description: 'Recommend `dig` for deeply nested access.'
|
|
15
|
+
Enabled: true
|
|
16
|
+
AutoCorrect: false
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
lib = File.expand_path("../lib", __FILE__)
|
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
|
+
require "ezcater_rubocop/version"
|
|
6
|
+
|
|
7
|
+
Gem::Specification.new do |spec|
|
|
8
|
+
spec.name = "ezcater_rubocop"
|
|
9
|
+
spec.version = EzcaterRubocop::VERSION
|
|
10
|
+
spec.authors = ["ezCater, Inc"]
|
|
11
|
+
spec.email = ["engineering@ezcater.com"]
|
|
12
|
+
|
|
13
|
+
spec.summary = "ezCater custom cops and shared configuration"
|
|
14
|
+
spec.description = spec.summary
|
|
15
|
+
spec.homepage = "https://github.com/ezcater/ezcater_rubocop"
|
|
16
|
+
spec.license = "MIT"
|
|
17
|
+
|
|
18
|
+
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
|
19
|
+
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
|
20
|
+
if spec.respond_to?(:metadata)
|
|
21
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
|
22
|
+
else
|
|
23
|
+
raise "RubyGems 2.0 or newer is required to protect against " \
|
|
24
|
+
"public gem pushes."
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
28
|
+
f.match(%r{^(test|spec|features)/})
|
|
29
|
+
end
|
|
30
|
+
spec.bindir = "exe"
|
|
31
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
32
|
+
spec.require_paths = ["lib"]
|
|
33
|
+
|
|
34
|
+
spec.add_development_dependency "bundler", "~> 1.15"
|
|
35
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
|
36
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
|
37
|
+
spec.add_development_dependency "pry-byebug"
|
|
38
|
+
|
|
39
|
+
spec.add_runtime_dependency "rubocop", "~> 0.49.1"
|
|
40
|
+
spec.add_runtime_dependency "rubocop-rspec", "~> 1.15.1"
|
|
41
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require "ezcater_rubocop/version"
|
|
2
|
+
require "rubocop-rspec"
|
|
3
|
+
|
|
4
|
+
# Because RuboCop doesn't yet support plugins, we have to monkey patch in a
|
|
5
|
+
# bit of our configuration. Based on approach from rubocop-rspec:
|
|
6
|
+
DEFAULT_FILES = File.expand_path("../../config/default.yml", __FILE__)
|
|
7
|
+
|
|
8
|
+
path = File.absolute_path(DEFAULT_FILES)
|
|
9
|
+
hash = RuboCop::ConfigLoader.send(:load_yaml_configuration, path)
|
|
10
|
+
config = RuboCop::Config.new(hash, path)
|
|
11
|
+
puts "configuration from #{DEFAULT_FILES}" if RuboCop::ConfigLoader.debug?
|
|
12
|
+
config = RuboCop::ConfigLoader.merge_with_default(config, path)
|
|
13
|
+
RuboCop::ConfigLoader.instance_variable_set(:@default_configuration, config)
|
|
14
|
+
|
|
15
|
+
require "rubocop/cop/ezcater/rspec_require_feature_flag_mock"
|
|
16
|
+
require "rubocop/cop/ezcater/rspec_dot_not_self_dot"
|
|
17
|
+
require "rubocop/cop/ezcater/style_dig"
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module RuboCop
|
|
4
|
+
module Cop
|
|
5
|
+
module Ezcater
|
|
6
|
+
# Use ".<class method>" instead of "self.<class method>" in RSpec example
|
|
7
|
+
# group descriptions.
|
|
8
|
+
#
|
|
9
|
+
# @example
|
|
10
|
+
#
|
|
11
|
+
# # good
|
|
12
|
+
# describe ".does_stuff" do
|
|
13
|
+
# ...
|
|
14
|
+
# end
|
|
15
|
+
#
|
|
16
|
+
# # bad
|
|
17
|
+
# describe "self.does_stuff" do
|
|
18
|
+
# ...
|
|
19
|
+
# end
|
|
20
|
+
class RspecDotNotSelfDot < Cop
|
|
21
|
+
SELF_DOT_REGEXP = /["']self\./
|
|
22
|
+
MSG = 'Use ".<class method>" instead of "self.<class method>" for example group description.'.freeze
|
|
23
|
+
|
|
24
|
+
def_node_matcher :example_group_match, <<-PATTERN
|
|
25
|
+
(send _ #{RuboCop::RSpec::Language::ExampleGroups::ALL.node_pattern_union} $_ ...)
|
|
26
|
+
PATTERN
|
|
27
|
+
|
|
28
|
+
def on_send(node)
|
|
29
|
+
example_group_match(node) do |doc|
|
|
30
|
+
add_offense(doc, :expression, MSG) if SELF_DOT_REGEXP =~ doc.source
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def autocorrect(node)
|
|
35
|
+
lambda do |corrector|
|
|
36
|
+
corrector.remove(Parser::Source::Range.new(node.source_range.source_buffer,
|
|
37
|
+
node.source_range.begin_pos + 1,
|
|
38
|
+
node.source_range.begin_pos + 5))
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
module RuboCop
|
|
2
|
+
module Cop
|
|
3
|
+
module Ezcater
|
|
4
|
+
# Enforce usage of our `mock_feature_flag` helpers over explicit usage
|
|
5
|
+
# of allow(FeatureFlag) mocking.
|
|
6
|
+
#
|
|
7
|
+
# @example
|
|
8
|
+
#
|
|
9
|
+
# # good
|
|
10
|
+
# mock_feature_flag("MyFeatureFlag", true)
|
|
11
|
+
# mock_feature_flag("MyFeatureFlag", { user: current_user }, true)
|
|
12
|
+
#
|
|
13
|
+
# # bad
|
|
14
|
+
# allow(FeatureFlag).to receive(:is_active?).and_return(true)
|
|
15
|
+
# allow(FeatureFlag).to receive(:is_active?).with("MyFeatureFlag").and_return(true)
|
|
16
|
+
# allow(FeatureFlag).to receive(:is_active?).with("MyFeatureFlag", user: current_user).and_return(true)
|
|
17
|
+
class RspecRequireFeatureFlagMock < Cop
|
|
18
|
+
MSG = "Use the `mock_feature_flag` helper instead of mocking `allow(FeatureFlag)`".freeze
|
|
19
|
+
|
|
20
|
+
def_node_matcher :feature_flag_const?, <<~PATTERN
|
|
21
|
+
(const _ :FeatureFlag)
|
|
22
|
+
PATTERN
|
|
23
|
+
|
|
24
|
+
def on_const(node)
|
|
25
|
+
return unless feature_flag_const?(node)
|
|
26
|
+
|
|
27
|
+
# Walk to send node where method = :allow
|
|
28
|
+
match_node = node
|
|
29
|
+
match_node = match_node.parent while not_allow_send_node?(match_node.parent)
|
|
30
|
+
match_node = match_node.parent
|
|
31
|
+
|
|
32
|
+
# Validate send node, method = :allow; could have never been found
|
|
33
|
+
return unless allow_send_node?(match_node)
|
|
34
|
+
|
|
35
|
+
# Finish tree navigation to full line for highlighting
|
|
36
|
+
match_node = match_node.parent while match_node.parent
|
|
37
|
+
add_offense(match_node, :expression)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
private
|
|
41
|
+
|
|
42
|
+
def not_allow_send_node?(node)
|
|
43
|
+
node && !allow_send_node?(node)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def allow_send_node?(node)
|
|
47
|
+
node && node.send_type? && node.method_name == :allow
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module RuboCop
|
|
4
|
+
module Cop
|
|
5
|
+
module Ezcater
|
|
6
|
+
# Use `dig` for deeply nested access.
|
|
7
|
+
#
|
|
8
|
+
# @example
|
|
9
|
+
#
|
|
10
|
+
# # good
|
|
11
|
+
# my_hash.dig('foo', 'bar')
|
|
12
|
+
# my_array.dig(0, 1)
|
|
13
|
+
#
|
|
14
|
+
# # bad
|
|
15
|
+
# my_hash['foo']['bar']
|
|
16
|
+
# my_hash['foo'] && my_hash['foo']['bar']
|
|
17
|
+
# my_array[0][1]
|
|
18
|
+
|
|
19
|
+
class StyleDig < Cop
|
|
20
|
+
extend TargetRubyVersion
|
|
21
|
+
|
|
22
|
+
minimum_target_ruby_version 2.3
|
|
23
|
+
|
|
24
|
+
MSG = "Use `dig` for nested access.".freeze
|
|
25
|
+
|
|
26
|
+
def_node_matcher :nested_access_match, <<-PATTERN
|
|
27
|
+
(send (send (send _receiver !:[]) :[] _) :[] _)
|
|
28
|
+
PATTERN
|
|
29
|
+
|
|
30
|
+
def on_send(node)
|
|
31
|
+
return unless nested_access_match(node) && !conditional_assignment?(node)
|
|
32
|
+
match_node = node
|
|
33
|
+
# walk to outermost access node
|
|
34
|
+
match_node = match_node.parent while access_node?(match_node.parent)
|
|
35
|
+
add_offense(match_node, :expression, MSG)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def autocorrect(node)
|
|
39
|
+
access_node = node
|
|
40
|
+
source_args = [access_node.method_args.first.source]
|
|
41
|
+
while access_node?(access_node.children.first)
|
|
42
|
+
access_node = access_node.children.first
|
|
43
|
+
source_args << access_node.method_args.first.source
|
|
44
|
+
end
|
|
45
|
+
root_node = access_node.children.first
|
|
46
|
+
|
|
47
|
+
lambda do |corrector|
|
|
48
|
+
range = Parser::Source::Range.new(node.source_range.source_buffer,
|
|
49
|
+
root_node.source_range.end_pos,
|
|
50
|
+
node.source_range.end_pos)
|
|
51
|
+
corrector.replace(range, ".dig(#{source_args.reverse.join(', ')})")
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
private
|
|
56
|
+
|
|
57
|
+
def conditional_assignment?(node)
|
|
58
|
+
node.parent && node.parent.or_asgn_type? && (node.parent.children.first == node)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def access_node?(node)
|
|
62
|
+
node && node.send_type? && node.method_name == :[]
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: ezcater_rubocop
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.49.0.rc0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- ezCater, Inc
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: exe
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2017-10-04 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: bundler
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '1.15'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '1.15'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rake
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '10.0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '10.0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: rspec
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '3.0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '3.0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: pry-byebug
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: rubocop
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: 0.49.1
|
|
76
|
+
type: :runtime
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: 0.49.1
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: rubocop-rspec
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - "~>"
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: 1.15.1
|
|
90
|
+
type: :runtime
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - "~>"
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: 1.15.1
|
|
97
|
+
description: ezCater custom cops and shared configuration
|
|
98
|
+
email:
|
|
99
|
+
- engineering@ezcater.com
|
|
100
|
+
executables: []
|
|
101
|
+
extensions: []
|
|
102
|
+
extra_rdoc_files: []
|
|
103
|
+
files:
|
|
104
|
+
- ".gitignore"
|
|
105
|
+
- ".rspec"
|
|
106
|
+
- ".rubocop.yml"
|
|
107
|
+
- ".ruby-gemset"
|
|
108
|
+
- ".ruby-version"
|
|
109
|
+
- ".travis.yml"
|
|
110
|
+
- CHANGELOG.md
|
|
111
|
+
- Gemfile
|
|
112
|
+
- LICENSE.txt
|
|
113
|
+
- README.md
|
|
114
|
+
- Rakefile
|
|
115
|
+
- bin/console
|
|
116
|
+
- bin/setup
|
|
117
|
+
- config/default.yml
|
|
118
|
+
- ezcater_rubocop.gemspec
|
|
119
|
+
- lib/ezcater_rubocop.rb
|
|
120
|
+
- lib/ezcater_rubocop/version.rb
|
|
121
|
+
- lib/rubocop/cop/ezcater/rspec_dot_not_self_dot.rb
|
|
122
|
+
- lib/rubocop/cop/ezcater/rspec_require_feature_flag_mock.rb
|
|
123
|
+
- lib/rubocop/cop/ezcater/style_dig.rb
|
|
124
|
+
- lib/rubocop/rspec/language/each_selector.rb
|
|
125
|
+
homepage: https://github.com/ezcater/ezcater_rubocop
|
|
126
|
+
licenses:
|
|
127
|
+
- MIT
|
|
128
|
+
metadata:
|
|
129
|
+
allowed_push_host: https://rubygems.org
|
|
130
|
+
post_install_message:
|
|
131
|
+
rdoc_options: []
|
|
132
|
+
require_paths:
|
|
133
|
+
- lib
|
|
134
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - ">="
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: '0'
|
|
139
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
140
|
+
requirements:
|
|
141
|
+
- - ">"
|
|
142
|
+
- !ruby/object:Gem::Version
|
|
143
|
+
version: 1.3.1
|
|
144
|
+
requirements: []
|
|
145
|
+
rubyforge_project:
|
|
146
|
+
rubygems_version: 2.6.13
|
|
147
|
+
signing_key:
|
|
148
|
+
specification_version: 4
|
|
149
|
+
summary: ezCater custom cops and shared configuration
|
|
150
|
+
test_files: []
|