cookstyle 6.9.0 → 6.10.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/config/cookstyle.yml +26 -0
- data/lib/cookstyle.rb +1 -0
- data/lib/cookstyle/version.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/multiple_platform_checks.rb +60 -0
- data/lib/rubocop/cop/chef/redundant/ohai_attribute_to_string.rb +68 -0
- data/lib/rubocop/cop/chef/sharing/include_resource_examples.rb +59 -0
- data/lib/rubocop/monkey_patches/registry_cop.rb +14 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe8edd0728c5a74a2496aa1fea1093bbcafbe584b37c2e3a65edc1103fa8580d
|
4
|
+
data.tar.gz: 11abc23f923ef8b0e50bb91223cedc33c6b230ba1d30c2f4d37feb49df1452e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 779695f4dd5a791a76ba01c59debefcc697826bbd3bbe2663369163a0d451d703dfc30f28c44017e34f9574c7c6365690ed1a4839fe116e51e1a42037bfb7144
|
7
|
+
data.tar.gz: 87aed3d5935014296eae0b5280ef942011e31a546e92391d604eb581fcd0ea8f0882f03b08a50633c18ed876acbe895fc8dbd653adcd3345ac70a683b30afceb
|
data/config/cookstyle.yml
CHANGED
@@ -503,6 +503,14 @@ ChefSharing/IncludeResourceDescriptions:
|
|
503
503
|
Include:
|
504
504
|
- '**/resources/*.rb'
|
505
505
|
|
506
|
+
ChefSharing/IncludeResourceExamples:
|
507
|
+
Description: Resources should include examples field to allow automated documention. Requires Chef Infra Client 13.9 or later.
|
508
|
+
StyleGuide: '#chefsharingincluderesourceexamples'
|
509
|
+
Enabled: false
|
510
|
+
VersionAdded: '6.10.0'
|
511
|
+
Include:
|
512
|
+
- '**/resources/*.rb'
|
513
|
+
|
506
514
|
###############################
|
507
515
|
# ChefDeprecations: Resolving Deprecations that block upgrading Chef Infra Client
|
508
516
|
###############################
|
@@ -1727,6 +1735,24 @@ ChefRedundantCode/UseCreateIfMissing:
|
|
1727
1735
|
- '**/attributes/*.rb'
|
1728
1736
|
- '**/Berksfile'
|
1729
1737
|
|
1738
|
+
ChefRedundantCode/OhaiAttributeToString:
|
1739
|
+
Description: Many Ohai node attributes are already strings and don't need to be cast to strings again
|
1740
|
+
StyleGuide: '#ohaiattributetostring'
|
1741
|
+
Enabled: true
|
1742
|
+
VersionAdded: '6.10.0'
|
1743
|
+
Exclude:
|
1744
|
+
- '**/metadata.rb'
|
1745
|
+
- '**/Berksfile'
|
1746
|
+
|
1747
|
+
ChefRedundantCode/MultiplePlatformChecks:
|
1748
|
+
Description: You can pass multiple values to the platform? and platform_family? helpers instead of calling the helpers multiple times.
|
1749
|
+
StyleGuide: '#multipleplatformchecks'
|
1750
|
+
Enabled: true
|
1751
|
+
VersionAdded: '6.10.0'
|
1752
|
+
Exclude:
|
1753
|
+
- '**/metadata.rb'
|
1754
|
+
- '**/Berksfile'
|
1755
|
+
|
1730
1756
|
###############################
|
1731
1757
|
# ChefEffortless: Migrating to new patterns
|
1732
1758
|
###############################
|
data/lib/cookstyle.rb
CHANGED
@@ -12,6 +12,7 @@ require 'rubocop/monkey_patches/comment_config.rb'
|
|
12
12
|
require 'rubocop/monkey_patches/config.rb'
|
13
13
|
require 'rubocop/monkey_patches/cop.rb'
|
14
14
|
require 'rubocop/monkey_patches/team.rb'
|
15
|
+
require 'rubocop/monkey_patches/registry_cop.rb'
|
15
16
|
|
16
17
|
module RuboCop
|
17
18
|
class ConfigLoader
|
data/lib/cookstyle/version.rb
CHANGED
@@ -0,0 +1,60 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: 2020, Chef Software, Inc.
|
3
|
+
# Author:: Tim Smith (<tsmith@chef.io>)
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
|
18
|
+
module RuboCop
|
19
|
+
module Cop
|
20
|
+
module Chef
|
21
|
+
module ChefRedundantCode
|
22
|
+
# You can pass multiple values to the platform? and platform_family? helpers instead of calling the helpers multiple times.
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
#
|
26
|
+
# # bad
|
27
|
+
# platform?('redhat') || platform?('ubuntu')
|
28
|
+
# platform_family?('debian') || platform_family?('rhel')
|
29
|
+
#
|
30
|
+
# # good
|
31
|
+
# platform?('redhat', 'ubuntu')
|
32
|
+
# platform_family?('debian', 'rhel')
|
33
|
+
#
|
34
|
+
class MultiplePlatformChecks < Cop
|
35
|
+
MSG = 'You can pass multiple values to the platform? and platform_family? helpers instead of calling the helpers multiple times.'.freeze
|
36
|
+
|
37
|
+
def_node_matcher :or_platform_helpers?, <<-PATTERN
|
38
|
+
(or (send nil? ${:platform? :platform_family?} $_ )* )
|
39
|
+
PATTERN
|
40
|
+
|
41
|
+
def on_or(node)
|
42
|
+
or_platform_helpers?(node) do |helpers, _plats|
|
43
|
+
# if the helper types were the same it's an offense, but platform_family?('rhel') || platform?('ubuntu') is legit
|
44
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor) if helpers.uniq.size == 1
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def autocorrect(node)
|
49
|
+
or_platform_helpers?(node) do |type, plats|
|
50
|
+
lambda do |corrector|
|
51
|
+
new_string = "#{type.first}(#{plats.map(&:source).join(', ')})"
|
52
|
+
corrector.replace(node.loc.expression, new_string)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: 2020, Chef Software, Inc.
|
3
|
+
# Author:: Tim Smith (<tsmith@chef.io>)
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
|
18
|
+
module RuboCop
|
19
|
+
module Cop
|
20
|
+
module Chef
|
21
|
+
module ChefRedundantCode
|
22
|
+
# Many Ohai node attributes are already strings and don't need to be cast to strings again
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
#
|
26
|
+
# # bad
|
27
|
+
# node['platform'].to_s
|
28
|
+
# node['platform_family'].to_s
|
29
|
+
# node['platform_version'].to_s
|
30
|
+
# node['fqdn'].to_s
|
31
|
+
# node['hostname'].to_s
|
32
|
+
# node['os'].to_s
|
33
|
+
# node['name'].to_s
|
34
|
+
#
|
35
|
+
# # good
|
36
|
+
# node['platform']
|
37
|
+
# node['platform_family']
|
38
|
+
# node['platform_version']
|
39
|
+
# node['fqdn']
|
40
|
+
# node['hostname']
|
41
|
+
# node['os']
|
42
|
+
# node['name']
|
43
|
+
#
|
44
|
+
class OhaiAttributeToString < Cop
|
45
|
+
MSG = "This Ohai node attribute is already a string and doesn't need to be converted".freeze
|
46
|
+
|
47
|
+
def_node_matcher :platform_to_s?, <<-PATTERN
|
48
|
+
(send (send (send nil? :node) :[] $(str {"platform" "platform_family" "platform_version" "fqdn" "hostname" "os" "name"}) ) :to_s )
|
49
|
+
PATTERN
|
50
|
+
|
51
|
+
def on_send(node)
|
52
|
+
platform_to_s?(node) do
|
53
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def autocorrect(node)
|
58
|
+
platform_to_s?(node) do |method|
|
59
|
+
lambda do |corrector|
|
60
|
+
corrector.replace(node.loc.expression, "node['#{method.value}']")
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright 2020, Chef Software Inc.
|
3
|
+
# Author:: Tim Smith (<tsmith@chef.io>)
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
module RuboCop
|
18
|
+
module Cop
|
19
|
+
module Chef
|
20
|
+
module ChefSharing
|
21
|
+
# Resources should include examples field to allow automated documention. Requires Chef Infra Client 13.9 or later.
|
22
|
+
#
|
23
|
+
# @example
|
24
|
+
#
|
25
|
+
# # good
|
26
|
+
# examples <<~DOC
|
27
|
+
# **Specify a global domain value**
|
28
|
+
#
|
29
|
+
# ```ruby
|
30
|
+
# macos_userdefaults 'full keyboard access to all controls' do
|
31
|
+
# key 'AppleKeyboardUIMode'
|
32
|
+
# value '2'
|
33
|
+
# end
|
34
|
+
# ```
|
35
|
+
# DOC
|
36
|
+
#
|
37
|
+
class IncludeResourceExamples < Cop
|
38
|
+
include RangeHelp
|
39
|
+
extend TargetChefVersion
|
40
|
+
|
41
|
+
minimum_target_chef_version '13.9'
|
42
|
+
|
43
|
+
MSG = 'Resources should include examples field to allow automated documention. Requires Chef Infra Client 13.9 or later.'.freeze
|
44
|
+
|
45
|
+
def investigate(processed_source)
|
46
|
+
return if processed_source.blank?
|
47
|
+
|
48
|
+
# Using range similar to RuboCop::Cop::Naming::Filename (file_name.rb)
|
49
|
+
range = source_range(processed_source.buffer, 1, 0)
|
50
|
+
|
51
|
+
add_offense(nil, location: range, message: MSG, severity: :refactor) unless resource_examples(processed_source.ast).any?
|
52
|
+
end
|
53
|
+
|
54
|
+
def_node_search :resource_examples, '(send nil? :examples dstr ...)'
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module RuboCop
|
2
|
+
module Cop
|
3
|
+
class Registry
|
4
|
+
# we monkeypatch this warning to replace rubocop with cookstyle
|
5
|
+
def print_warning(name, path)
|
6
|
+
message = "#{path}: Warning: no department given for #{name}."
|
7
|
+
if path.end_with?('.rb')
|
8
|
+
message += ' Run `cookstyle -a --only Migration/DepartmentName` to fix.'
|
9
|
+
end
|
10
|
+
warn message
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cookstyle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.10.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thom May
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-
|
12
|
+
date: 2020-07-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rubocop
|
@@ -209,7 +209,9 @@ files:
|
|
209
209
|
- lib/rubocop/cop/chef/redundant/custom_resource_with_allowed_actions.rb
|
210
210
|
- lib/rubocop/cop/chef/redundant/grouping_metadata.rb
|
211
211
|
- lib/rubocop/cop/chef/redundant/long_description_metadata.rb
|
212
|
+
- lib/rubocop/cop/chef/redundant/multiple_platform_checks.rb
|
212
213
|
- lib/rubocop/cop/chef/redundant/name_property_and_required.rb
|
214
|
+
- lib/rubocop/cop/chef/redundant/ohai_attribute_to_string.rb
|
213
215
|
- lib/rubocop/cop/chef/redundant/property_splat_regex.rb
|
214
216
|
- lib/rubocop/cop/chef/redundant/property_with_default_and_required.rb
|
215
217
|
- lib/rubocop/cop/chef/redundant/provides_metadata.rb
|
@@ -226,6 +228,7 @@ files:
|
|
226
228
|
- lib/rubocop/cop/chef/sharing/empty_metadata_field.rb
|
227
229
|
- lib/rubocop/cop/chef/sharing/include_property_descriptions.rb
|
228
230
|
- lib/rubocop/cop/chef/sharing/include_resource_descriptions.rb
|
231
|
+
- lib/rubocop/cop/chef/sharing/include_resource_examples.rb
|
229
232
|
- lib/rubocop/cop/chef/sharing/insecure_cookbook_url.rb
|
230
233
|
- lib/rubocop/cop/chef/sharing/invalid_license_string.rb
|
231
234
|
- lib/rubocop/cop/chef/style/attribute_keys.rb
|
@@ -247,6 +250,7 @@ files:
|
|
247
250
|
- lib/rubocop/monkey_patches/comment_config.rb
|
248
251
|
- lib/rubocop/monkey_patches/config.rb
|
249
252
|
- lib/rubocop/monkey_patches/cop.rb
|
253
|
+
- lib/rubocop/monkey_patches/registry_cop.rb
|
250
254
|
- lib/rubocop/monkey_patches/team.rb
|
251
255
|
homepage:
|
252
256
|
licenses:
|