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 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
@@ -0,0 +1,12 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+
11
+ # rspec failure tracking
12
+ .rspec_status
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --require spec_helper.rb
2
+ --format documentation
3
+ --color
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
@@ -0,0 +1,8 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.3.3
5
+ before_install: gem install bundler -v 1.15.4
6
+ script:
7
+ - bundle exec rubocop
8
+ - bundle exec rspec
data/CHANGELOG.md ADDED
@@ -0,0 +1,7 @@
1
+ # ezcater_rubocop
2
+
3
+ # v0.49.0 (unreleased)
4
+ - Initial release.
5
+ - Add `Ezcater/RequireFeatureFlagMock` cop.
6
+ - Add `Ezcater/RspecDotNotSelfDot` cop.
7
+ - Add `Ezcater/StyleDig` cop.
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ # Specify your gem's dependencies in ezcater_rubocop.gemspec
6
+ gemspec
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
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
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
@@ -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,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,3 @@
1
+ module EzcaterRubocop
2
+ VERSION = "0.49.0.rc0".freeze
3
+ end
@@ -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
@@ -0,0 +1,13 @@
1
+ # Monkey-patch SelectorSet to allow enumeration of selectors.
2
+
3
+ module RuboCop
4
+ module RSpec
5
+ module Language
6
+ class SelectorSet
7
+ def each(&blk)
8
+ selectors.each(&blk)
9
+ end
10
+ end
11
+ end
12
+ end
13
+ 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: []