cookstyle 5.13.7 → 5.14.1
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 +4 -4
- data/config/cookstyle.yml +17 -1
- data/lib/cookstyle/version.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/chef_rewind.rb +106 -0
- data/lib/rubocop/cop/chef/deprecation/run_command_helper.rb +14 -0
- data/lib/rubocop/cop/chef/modernize/chef_gem_nokogiri.rb +60 -0
- data/lib/rubocop/cop/chef/modernize/includes_mixin_shellout.rb +2 -2
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f0fe10480691d3522f05f3d4a0db77cac9543e29cd50ed9f6764d45294973c2f
|
4
|
+
data.tar.gz: 7308ec701ae4d522633a62a59cf28d6eab5b1460179ef1af5be3a7926a8d688c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d3659fda58293a623b91d907a30fd5f5f1229da9dcbd7a8d5ebc83083baa101db9e274e15a1feae9f14071c274dbac4ee7a86069dc05c0b69fdf3650fd622da9
|
7
|
+
data.tar.gz: b08f3957087487156952dc5856bf2ece8c0f4f432e11d8551d9c4492c10ff148cce4ebad8cdef712a6e1179190106893c6490f07443c54dbef92062c1d8308a1
|
data/config/cookstyle.yml
CHANGED
@@ -625,6 +625,14 @@ ChefDeprecations/NodeSetWithoutLevel:
|
|
625
625
|
- '**/metadata.rb'
|
626
626
|
- '**/attributes/*.rb'
|
627
627
|
|
628
|
+
ChefDeprecations/ChefRewind:
|
629
|
+
Description: Use delete_resource / edit_resource instead of functionality in the deprecated chef-rewind gem
|
630
|
+
Enabled: true
|
631
|
+
VersionAdded: '5.14.0'
|
632
|
+
Exclude:
|
633
|
+
- '**/metadata.rb'
|
634
|
+
- '**/attributes/*.rb'
|
635
|
+
|
628
636
|
###############################
|
629
637
|
# ChefModernize: Cleaning up legacy code and using new built-in resources
|
630
638
|
###############################
|
@@ -913,7 +921,7 @@ ChefModernize/ZipfileResource:
|
|
913
921
|
VersionAdded: '5.12.0'
|
914
922
|
|
915
923
|
ChefModernize/UnnecessaryMixlibShelloutRequire:
|
916
|
-
Description: Chef Infra Client
|
924
|
+
Description: Chef Infra Client 12.4 and later include mixlib/shellout automatically in resources and providers.
|
917
925
|
Enabled: true
|
918
926
|
VersionAdded: '5.12.0'
|
919
927
|
Include:
|
@@ -928,6 +936,14 @@ ChefModernize/EmptyResourceInitializeMethod:
|
|
928
936
|
- '**/resources/*.rb'
|
929
937
|
- '**/providers/*.rb'
|
930
938
|
|
939
|
+
ChefModernize/ChefGemNokogiri:
|
940
|
+
Description: The nokogiri gem ships in Chef Infra Client 12+ and does not need to be installed before being used.
|
941
|
+
Enabled: true
|
942
|
+
VersionAdded: '5.14.0'
|
943
|
+
Exclude:
|
944
|
+
- '**/metadata.rb'
|
945
|
+
- '**/attributes/*.rb'
|
946
|
+
|
931
947
|
###############################
|
932
948
|
# Migrating to new patterns
|
933
949
|
###############################
|
data/lib/cookstyle/version.rb
CHANGED
@@ -0,0 +1,106 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: 2019, 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 ChefDeprecations
|
22
|
+
# Use delete_resource / edit_resource instead of functionality in the deprecated chef-rewind gem
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
#
|
26
|
+
# chef_gem 'chef-rewind'
|
27
|
+
#
|
28
|
+
# require 'chef/rewind'
|
29
|
+
#
|
30
|
+
# rewind "user[postgres]" do
|
31
|
+
# home '/var/lib/pgsql/9.2'
|
32
|
+
# cookbook 'my-postgresql' # or `cookbook cookbook_name()`
|
33
|
+
# end
|
34
|
+
#
|
35
|
+
# unwind "user[postgres]"
|
36
|
+
#
|
37
|
+
class ChefRewind < Cop
|
38
|
+
include RuboCop::Chef::CookbookHelpers
|
39
|
+
|
40
|
+
MAPPING = {
|
41
|
+
rewind: 'edit_resource',
|
42
|
+
unwind: 'delete_resource',
|
43
|
+
}.freeze
|
44
|
+
|
45
|
+
MSG = 'Use delete_resource / edit_resource instead of functionality in the deprecated chef-rewind gem'.freeze
|
46
|
+
|
47
|
+
def_node_matcher :rewind_gem_install?, <<-PATTERN
|
48
|
+
(send nil? :chef_gem (str "chef-rewind"))
|
49
|
+
PATTERN
|
50
|
+
|
51
|
+
def_node_matcher :require_rewind?, <<-PATTERN
|
52
|
+
(send nil? :require (str "chef/rewind"))
|
53
|
+
PATTERN
|
54
|
+
|
55
|
+
def_node_matcher :rewind_resources?, <<-PATTERN
|
56
|
+
(send nil? ${:rewind :unwind} ... )
|
57
|
+
PATTERN
|
58
|
+
|
59
|
+
def on_send(node)
|
60
|
+
rewind_gem_install?(node) do
|
61
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor)
|
62
|
+
end
|
63
|
+
|
64
|
+
require_rewind?(node) do
|
65
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor)
|
66
|
+
end
|
67
|
+
|
68
|
+
rewind_resources?(node) do
|
69
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def on_block(node)
|
74
|
+
match_property_in_resource?(:chef_gem, 'package_name', node) do |pkg_name|
|
75
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor) if pkg_name.arguments&.first&.str_content == 'chef-rewind'
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def autocorrect(node)
|
80
|
+
lambda do |corrector|
|
81
|
+
rewind_gem_install?(node) do
|
82
|
+
node = node.parent if node.parent&.block_type? # make sure we get the whole block not just the method in the block
|
83
|
+
corrector.remove(node.loc.expression)
|
84
|
+
return
|
85
|
+
end
|
86
|
+
|
87
|
+
require_rewind?(node) do
|
88
|
+
corrector.remove(node.loc.expression)
|
89
|
+
return
|
90
|
+
end
|
91
|
+
|
92
|
+
match_property_in_resource?(:chef_gem, 'package_name', node) do |pkg_name|
|
93
|
+
corrector.remove(node.loc.expression) if pkg_name.arguments&.first&.str_content == 'chef-rewind'
|
94
|
+
return
|
95
|
+
end
|
96
|
+
|
97
|
+
rewind_resources?(node) do |string|
|
98
|
+
corrector.replace(node.loc.expression, node.source.gsub(string.to_s, MAPPING[string]))
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -23,6 +23,9 @@ module RuboCop
|
|
23
23
|
# @example
|
24
24
|
#
|
25
25
|
# # bad
|
26
|
+
# require 'chef/mixin/command'
|
27
|
+
# include Chef::Mixin::Command
|
28
|
+
#
|
26
29
|
# run_command('/bin/foo')
|
27
30
|
# run_command_with_systems_locale('/bin/foo')
|
28
31
|
#
|
@@ -33,12 +36,23 @@ module RuboCop
|
|
33
36
|
MSG = "Use 'shell_out!' instead of the legacy 'run_command' or 'run_command_with_systems_locale' helpers for shelling out. The run_command helper was removed in Chef Infra Client 13.".freeze
|
34
37
|
|
35
38
|
def_node_matcher :calls_run_command?, '(send nil? {:run_command :run_command_with_systems_locale} ...)'
|
39
|
+
def_node_matcher :require_mixin_command?, '(send nil? :require (str "chef/mixin/command"))'
|
40
|
+
def_node_matcher :include_mixin_command?, '(send nil? :include (const (const (const nil? :Chef) :Mixin) :Command))'
|
41
|
+
|
36
42
|
def_node_search :defines_run_command?, '(def {:run_command :run_command_with_systems_locale} ...)'
|
37
43
|
|
38
44
|
def on_send(node)
|
39
45
|
calls_run_command?(node) do
|
40
46
|
add_offense(node, location: :expression, message: MSG, severity: :refactor) unless defines_run_command?(processed_source.ast)
|
41
47
|
end
|
48
|
+
|
49
|
+
require_mixin_command?(node) do
|
50
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor)
|
51
|
+
end
|
52
|
+
|
53
|
+
include_mixin_command?(node) do
|
54
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor)
|
55
|
+
end
|
42
56
|
end
|
43
57
|
end
|
44
58
|
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: 2019, 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 ChefModernize
|
22
|
+
# The nokogiri gem ships in Chef Infra Client 12+ and does not need to be installed before being used
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
#
|
26
|
+
# # bad
|
27
|
+
# chef_gem 'nokogiri'
|
28
|
+
#
|
29
|
+
class ChefGemNokogiri < Cop
|
30
|
+
include RuboCop::Chef::CookbookHelpers
|
31
|
+
|
32
|
+
MSG = 'The nokogiri gem ships in Chef Infra Client 12+ and does not need to be installed before being used.'.freeze
|
33
|
+
|
34
|
+
def_node_matcher :nokogiri_install?, <<-PATTERN
|
35
|
+
(send nil? :chef_gem (str "nokogiri"))
|
36
|
+
PATTERN
|
37
|
+
|
38
|
+
def on_block(node)
|
39
|
+
match_property_in_resource?(:chef_gem, 'package_name', node) do |pkg_name|
|
40
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor) if pkg_name.arguments&.first&.str_content == 'nokogiri'
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def on_send(node)
|
45
|
+
nokogiri_install?(node) do
|
46
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def autocorrect(node)
|
51
|
+
lambda do |corrector|
|
52
|
+
node = node.parent if node.parent&.block_type? # make sure we get the whole block not just the method in the block
|
53
|
+
corrector.remove(node.loc.expression)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -19,7 +19,7 @@ module RuboCop
|
|
19
19
|
module Cop
|
20
20
|
module Chef
|
21
21
|
module ChefModernize
|
22
|
-
# There is no need to include Chef::Mixin::ShellOut in resources or providers as this is already done by Chef Infra Client.
|
22
|
+
# There is no need to include Chef::Mixin::ShellOut in resources or providers as this is already done by Chef Infra Client 12.4+.
|
23
23
|
#
|
24
24
|
# @example
|
25
25
|
#
|
@@ -28,7 +28,7 @@ module RuboCop
|
|
28
28
|
# include Chef::Mixin::ShellOut
|
29
29
|
|
30
30
|
class IncludingMixinShelloutInResources < Cop
|
31
|
-
MSG = 'There is no need to include Chef::Mixin::ShellOut in resources or providers as this is already done by Chef Infra Client.'.freeze
|
31
|
+
MSG = 'There is no need to include Chef::Mixin::ShellOut in resources or providers as this is already done by Chef Infra Client 12.4+.'.freeze
|
32
32
|
|
33
33
|
def_node_matcher :include_shellout?, <<-PATTERN
|
34
34
|
(send nil? :include (const (const (const nil? :Chef) :Mixin) :ShellOut))
|
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: 5.
|
4
|
+
version: 5.14.1
|
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: 2019-
|
12
|
+
date: 2019-12-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rubocop
|
@@ -75,6 +75,7 @@ files:
|
|
75
75
|
- lib/rubocop/cop/chef/deprecation/attribute_metadata.rb
|
76
76
|
- lib/rubocop/cop/chef/deprecation/chef_handler_supports.rb
|
77
77
|
- lib/rubocop/cop/chef/deprecation/chef_rest.rb
|
78
|
+
- lib/rubocop/cop/chef/deprecation/chef_rewind.rb
|
78
79
|
- lib/rubocop/cop/chef/deprecation/cheffile.rb
|
79
80
|
- lib/rubocop/cop/chef/deprecation/chefspec_coverage_report.rb
|
80
81
|
- lib/rubocop/cop/chef/deprecation/chefspec_legacy_runner.rb
|
@@ -132,6 +133,7 @@ files:
|
|
132
133
|
- lib/rubocop/cop/chef/modernize/berksfile_source.rb
|
133
134
|
- lib/rubocop/cop/chef/modernize/build_essential.rb
|
134
135
|
- lib/rubocop/cop/chef/modernize/chef_14_resources.rb
|
136
|
+
- lib/rubocop/cop/chef/modernize/chef_gem_nokogiri.rb
|
135
137
|
- lib/rubocop/cop/chef/modernize/cron_manage_resource.rb
|
136
138
|
- lib/rubocop/cop/chef/modernize/default_action_initializer.rb
|
137
139
|
- lib/rubocop/cop/chef/modernize/defines_chefspec_matchers.rb
|