cookstyle 5.4.13 → 5.5.7
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 +231 -129
- data/lib/cookstyle.rb +1 -0
- data/lib/cookstyle/version.rb +1 -1
- data/lib/rubocop/chef/cookbook_helpers.rb +67 -0
- data/lib/rubocop/cop/chef/correctness/block_guard_clause_string_only.rb +34 -31
- data/lib/rubocop/cop/chef/correctness/cb_depends_on_self.rb +16 -14
- data/lib/rubocop/cop/chef/correctness/default_maintainer_metadata.rb +22 -20
- data/lib/rubocop/cop/chef/correctness/insecure_cookbook_url.rb +32 -30
- data/lib/rubocop/cop/chef/correctness/invalid_license_string.rb +454 -453
- data/lib/rubocop/cop/chef/correctness/invalid_platform_metadata.rb +57 -57
- data/lib/rubocop/cop/chef/correctness/metadata_missing_name.rb +18 -16
- data/lib/rubocop/cop/chef/correctness/name_property_and_required.rb +61 -59
- data/lib/rubocop/cop/chef/correctness/node_normal.rb +29 -27
- data/lib/rubocop/cop/chef/correctness/node_normal_unless.rb +29 -27
- data/lib/rubocop/cop/chef/correctness/node_save.rb +46 -0
- data/lib/rubocop/cop/chef/correctness/ohai_default_recipe.rb +47 -0
- data/lib/rubocop/cop/chef/correctness/property_with_default_and_required.rb +35 -33
- data/lib/rubocop/cop/chef/correctness/property_with_name_attribute.rb +29 -27
- data/lib/rubocop/cop/chef/correctness/resource_sets_internal_properties.rb +52 -0
- data/lib/rubocop/cop/chef/correctness/resource_sets_name_property.rb +51 -0
- data/lib/rubocop/cop/chef/correctness/resource_with_none_action.rb +52 -0
- data/lib/rubocop/cop/chef/correctness/service_resource.rb +26 -24
- data/lib/rubocop/cop/chef/correctness/tmp_path.rb +30 -28
- data/lib/rubocop/cop/chef/deprecation/attribute_metadata.rb +22 -21
- data/lib/rubocop/cop/chef/deprecation/chef_rest.rb +56 -0
- data/lib/rubocop/cop/chef/deprecation/chocolatey_package_uninstall_action.rb +58 -0
- data/lib/rubocop/cop/chef/deprecation/conflicts_metadata.rb +18 -16
- data/lib/rubocop/cop/chef/deprecation/depends_compat_resource.rb +21 -19
- data/lib/rubocop/cop/chef/deprecation/depends_partial_search.rb +17 -15
- data/lib/rubocop/cop/chef/deprecation/depends_poise.rb +17 -15
- data/lib/rubocop/cop/chef/deprecation/deprecated_mixins.rb +39 -37
- data/lib/rubocop/cop/chef/deprecation/easy_install.rb +15 -13
- data/lib/rubocop/cop/chef/deprecation/epic_fail.rb +24 -22
- data/lib/rubocop/cop/chef/deprecation/erl_call.rb +15 -13
- data/lib/rubocop/cop/chef/deprecation/launchd_deprecated_hash_property.rb +55 -0
- data/lib/rubocop/cop/chef/deprecation/legacy_yum_cookbook_recipes.rb +24 -22
- data/lib/rubocop/cop/chef/deprecation/locale_lc_all_property.rb +45 -0
- data/lib/rubocop/cop/chef/deprecation/long_description_metadata.rb +21 -19
- data/lib/rubocop/cop/chef/deprecation/node_methods_not_attributes.rb +55 -53
- data/lib/rubocop/cop/chef/deprecation/node_set.rb +27 -25
- data/lib/rubocop/cop/chef/deprecation/node_set_unless.rb +27 -25
- data/lib/rubocop/cop/chef/deprecation/provides_metadata.rb +18 -16
- data/lib/rubocop/cop/chef/deprecation/replaces_metadata.rb +18 -16
- data/lib/rubocop/cop/chef/deprecation/require_recipe.rb +23 -21
- data/lib/rubocop/cop/chef/deprecation/suggests_metadata.rb +18 -16
- data/lib/rubocop/cop/chef/deprecation/use_inline_resources.rb +56 -0
- data/lib/rubocop/cop/chef/deprecation/user_supports_property.rb +53 -0
- data/lib/rubocop/cop/chef/deprecation/xml_ruby_recipe.rb +51 -0
- data/lib/rubocop/cop/chef/deprecation/yum_dnf_compat_recipe.rb +51 -0
- data/lib/rubocop/cop/chef/effortless/data_bags.rb +13 -11
- data/lib/rubocop/cop/chef/effortless/search_used.rb +13 -11
- data/lib/rubocop/cop/chef/modernize/apt_default_recipe.rb +22 -20
- data/lib/rubocop/cop/chef/modernize/berksfile_source.rb +31 -29
- data/lib/rubocop/cop/chef/modernize/build_essential.rb +25 -23
- data/lib/rubocop/cop/chef/modernize/chef_14_resources.rb +27 -25
- data/lib/rubocop/cop/chef/modernize/defines_chefspec_matchers.rb +25 -23
- data/lib/rubocop/cop/chef/modernize/execute_apt_update.rb +19 -17
- data/lib/rubocop/cop/chef/modernize/includes_mixin_shellout.rb +27 -25
- data/lib/rubocop/cop/chef/modernize/libarchive_file.rb +41 -0
- data/lib/rubocop/cop/chef/modernize/minitest_handler_usage.rb +21 -19
- data/lib/rubocop/cop/chef/modernize/powershell_expand_archive.rb +48 -0
- data/lib/rubocop/cop/chef/modernize/powershell_install_package.rb +51 -0
- data/lib/rubocop/cop/chef/modernize/powershell_install_windowsfeature.rb +54 -0
- data/lib/rubocop/cop/chef/modernize/resource_set_or_return.rb +25 -23
- data/lib/rubocop/cop/chef/modernize/resource_with_allowed_actions.rb +77 -0
- data/lib/rubocop/cop/chef/modernize/resource_with_attributes.rb +37 -35
- data/lib/rubocop/cop/chef/modernize/respond_to_metadata.rb +54 -0
- data/lib/rubocop/cop/chef/modernize/respond_to_provides.rb +25 -23
- data/lib/rubocop/cop/chef/modernize/respond_to_resource_name.rb +26 -24
- data/lib/rubocop/cop/chef/{effortless/node_save.rb → modernize/seven_zip_archive.rb} +16 -16
- data/lib/rubocop/cop/chef/modernize/shellouts_to_chocolatey.rb +59 -0
- data/lib/rubocop/cop/chef/modernize/whyrun_supported_true.rb +20 -18
- data/lib/rubocop/cop/chef/modernize/windows_default_recipe.rb +23 -21
- data/lib/rubocop/cop/chef/modernize/windows_version_helper.rb +20 -18
- data/lib/rubocop/cop/chef/modernize/windows_zipfile.rb +15 -13
- data/lib/rubocop/cop/chef/style/attribute_keys.rb +59 -57
- data/lib/rubocop/cop/chef/style/comment_sentence_spacing.rb +14 -12
- data/lib/rubocop/cop/chef/style/comments_copyright_format.rb +65 -63
- data/lib/rubocop/cop/chef/style/comments_format.rb +48 -45
- data/lib/rubocop/cop/chef/style/file_mode.rb +32 -30
- metadata +24 -9
- data/lib/rubocop/cop/chef/deprecation/respond_to_metadata.rb +0 -53
- data/lib/rubocop/cop/chef/modernize/ohai_default_recipe.rb +0 -45
- data/lib/rubocop/cop/chef/modernize/resource_with_allowed_action.rb +0 -75
- data/lib/rubocop/cop/chef/modernize/use_inline_resources.rb +0 -54
- data/lib/rubocop/cop/chef/modernize/xml_ruby_recipe.rb +0 -49
- data/lib/rubocop/cop/chef/modernize/yum_dnf_compat_recipe.rb +0 -49
|
@@ -16,35 +16,37 @@
|
|
|
16
16
|
module RuboCop
|
|
17
17
|
module Cop
|
|
18
18
|
module Chef
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
19
|
+
module ChefDeprecations
|
|
20
|
+
# The node.set_unless method has been removed in Chef-13 and must be replaced by node.normal_unless.
|
|
21
|
+
#
|
|
22
|
+
# Note that node.normal_unless keeps the semantics identical, but the use of node.normal is
|
|
23
|
+
# also discouraged.
|
|
24
|
+
#
|
|
25
|
+
# @example
|
|
26
|
+
#
|
|
27
|
+
# # bad
|
|
28
|
+
# node.set_unless['foo'] = true
|
|
29
|
+
#
|
|
30
|
+
# # good
|
|
31
|
+
# node.normal_unless['foo'] = true
|
|
32
|
+
#
|
|
33
|
+
class NodeSetUnless < Cop
|
|
34
|
+
MSG = 'Do not use node.set_unless. Replace with node.normal_unless to keep identical behavior.'.freeze
|
|
34
35
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
def_node_matcher :node_set_unless?, <<-PATTERN
|
|
37
|
+
(send (send _ :node) $:set_unless)
|
|
38
|
+
PATTERN
|
|
38
39
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
def on_send(node)
|
|
41
|
+
node_set_unless?(node) do
|
|
42
|
+
add_offense(node, location: :selector, message: MSG, severity: :refactor)
|
|
43
|
+
end
|
|
42
44
|
end
|
|
43
|
-
end
|
|
44
45
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
def autocorrect(node)
|
|
47
|
+
lambda do |corrector|
|
|
48
|
+
corrector.replace(node.loc.selector, 'normal_unless')
|
|
49
|
+
end
|
|
48
50
|
end
|
|
49
51
|
end
|
|
50
52
|
end
|
|
@@ -18,24 +18,26 @@
|
|
|
18
18
|
module RuboCop
|
|
19
19
|
module Cop
|
|
20
20
|
module Chef
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
21
|
+
module ChefDeprecations
|
|
22
|
+
# Don't use the deprecated 'provides' metadata value
|
|
23
|
+
#
|
|
24
|
+
# @example
|
|
25
|
+
#
|
|
26
|
+
# # bad in metadata.rb:
|
|
27
|
+
#
|
|
28
|
+
# provides "some_thing"
|
|
29
|
+
#
|
|
30
|
+
class ProvidesMetadata < Cop
|
|
31
|
+
MSG = "Don't use the deprecated 'provides' metadata value".freeze
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
def on_send(node)
|
|
34
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :provides
|
|
35
|
+
end
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
def autocorrect(node)
|
|
38
|
+
lambda do |corrector|
|
|
39
|
+
corrector.remove(node.loc.expression)
|
|
40
|
+
end
|
|
39
41
|
end
|
|
40
42
|
end
|
|
41
43
|
end
|
|
@@ -18,24 +18,26 @@
|
|
|
18
18
|
module RuboCop
|
|
19
19
|
module Cop
|
|
20
20
|
module Chef
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
21
|
+
module ChefDeprecations
|
|
22
|
+
# Don't use the deprecated 'replaces' metadata value
|
|
23
|
+
#
|
|
24
|
+
# @example
|
|
25
|
+
#
|
|
26
|
+
# # bad in metadata.rb:
|
|
27
|
+
#
|
|
28
|
+
# replaces "another_cookbook"
|
|
29
|
+
#
|
|
30
|
+
class ReplacesMetadata < Cop
|
|
31
|
+
MSG = "Don't use the deprecated 'replaces' metadata value".freeze
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
def on_send(node)
|
|
34
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :replaces
|
|
35
|
+
end
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
def autocorrect(node)
|
|
38
|
+
lambda do |corrector|
|
|
39
|
+
corrector.remove(node.loc.expression)
|
|
40
|
+
end
|
|
39
41
|
end
|
|
40
42
|
end
|
|
41
43
|
end
|
|
@@ -18,30 +18,32 @@
|
|
|
18
18
|
module RuboCop
|
|
19
19
|
module Cop
|
|
20
20
|
module Chef
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
21
|
+
module ChefDeprecations
|
|
22
|
+
# Make sure to use include_recipe instead of require_recipe
|
|
23
|
+
#
|
|
24
|
+
# @example
|
|
25
|
+
#
|
|
26
|
+
# # bad
|
|
27
|
+
# require_recipe 'foo'
|
|
28
|
+
#
|
|
29
|
+
# # good
|
|
30
|
+
# include_recipe 'foo'
|
|
31
|
+
#
|
|
32
|
+
class RequireRecipe < Cop
|
|
33
|
+
MSG = 'Use include_recipe instead of the require_recipe method'.freeze
|
|
33
34
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
def_node_matcher :require_recipe?, <<-PATTERN
|
|
36
|
+
(send nil? :require_recipe $str)
|
|
37
|
+
PATTERN
|
|
37
38
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
def on_send(node)
|
|
40
|
+
require_recipe?(node) { add_offense(node, location: :selector, message: MSG, severity: :refactor) }
|
|
41
|
+
end
|
|
41
42
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
def autocorrect(node)
|
|
44
|
+
lambda do |corrector|
|
|
45
|
+
corrector.replace(node.loc.selector, 'include_recipe')
|
|
46
|
+
end
|
|
45
47
|
end
|
|
46
48
|
end
|
|
47
49
|
end
|
|
@@ -18,24 +18,26 @@
|
|
|
18
18
|
module RuboCop
|
|
19
19
|
module Cop
|
|
20
20
|
module Chef
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
21
|
+
module ChefDeprecations
|
|
22
|
+
# Don't use the deprecated 'suggests' metadata value
|
|
23
|
+
#
|
|
24
|
+
# @example
|
|
25
|
+
#
|
|
26
|
+
# # bad in metadata.rb:
|
|
27
|
+
#
|
|
28
|
+
# suggests "another_cookbook"
|
|
29
|
+
#
|
|
30
|
+
class SuggestsMetadata < Cop
|
|
31
|
+
MSG = "Don't use the deprecated 'suggests' metadata value".freeze
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
def on_send(node)
|
|
34
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :suggests
|
|
35
|
+
end
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
def autocorrect(node)
|
|
38
|
+
lambda do |corrector|
|
|
39
|
+
corrector.remove(node.loc.expression)
|
|
40
|
+
end
|
|
39
41
|
end
|
|
40
42
|
end
|
|
41
43
|
end
|
|
@@ -0,0 +1,56 @@
|
|
|
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
|
+
module RuboCop
|
|
18
|
+
module Cop
|
|
19
|
+
module Chef
|
|
20
|
+
module ChefDeprecations
|
|
21
|
+
# use_inline_resources became the default in Chef Infra Client 13+ and no longer needs
|
|
22
|
+
# to be called in resources
|
|
23
|
+
#
|
|
24
|
+
# @example
|
|
25
|
+
#
|
|
26
|
+
# # bad
|
|
27
|
+
# use_inline_resources
|
|
28
|
+
# use_inline_resources if defined?(use_inline_resources)
|
|
29
|
+
#
|
|
30
|
+
class UseInlineResourcesDefined < Cop
|
|
31
|
+
MSG = 'use_inline_resources is now the default for resources in Chef Infra Client 13+ and does not need to be specified.'.freeze
|
|
32
|
+
|
|
33
|
+
def on_send(node)
|
|
34
|
+
if node.method_name == :use_inline_resources
|
|
35
|
+
# don't alert on the use_inline_resources within the defined? check
|
|
36
|
+
# that would result in 2 alerts on the same line and wouldn't be useful
|
|
37
|
+
return if node.parent && node.parent.defined_type?
|
|
38
|
+
|
|
39
|
+
# catch the full offense if the method is gated like this: use_inline_resources if defined?(use_inline_resources)
|
|
40
|
+
if node.parent && node.parent.if_type? && node.parent.children.first.method_name == :defined?
|
|
41
|
+
node = node.parent
|
|
42
|
+
end
|
|
43
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def autocorrect(node)
|
|
48
|
+
lambda do |corrector|
|
|
49
|
+
corrector.remove(node.loc.expression)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
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
|
+
module RuboCop
|
|
18
|
+
module Cop
|
|
19
|
+
module Chef
|
|
20
|
+
module ChefDeprecations
|
|
21
|
+
# The supports property was removed in Chef Infra Client 13 in favor of individual 'manage_home' and 'non_unique' properties.
|
|
22
|
+
#
|
|
23
|
+
# @example
|
|
24
|
+
#
|
|
25
|
+
# # bad
|
|
26
|
+
# user "betty" do
|
|
27
|
+
# supports({
|
|
28
|
+
# manage_home: true,
|
|
29
|
+
# non_unique: true
|
|
30
|
+
# })
|
|
31
|
+
# end
|
|
32
|
+
#
|
|
33
|
+
# # good
|
|
34
|
+
# user "betty" do
|
|
35
|
+
# manage_home true
|
|
36
|
+
# non_unique true
|
|
37
|
+
# end
|
|
38
|
+
#
|
|
39
|
+
class UserDeprecatedSupportsProperty < Cop
|
|
40
|
+
include RuboCop::Chef::CookbookHelpers
|
|
41
|
+
|
|
42
|
+
MSG = "The supports property was removed in Chef Infra Client 13 in favor of individual 'manage_home' and 'non_unique' properties.".freeze
|
|
43
|
+
|
|
44
|
+
def on_block(node)
|
|
45
|
+
match_property_in_resource?(:user, 'supports', node) do |property|
|
|
46
|
+
add_offense(property, location: :expression, message: MSG, severity: :refactor)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
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
|
+
module RuboCop
|
|
18
|
+
module Cop
|
|
19
|
+
module Chef
|
|
20
|
+
module ChefDeprecations
|
|
21
|
+
# Do not include the deprecated xml::ruby recipe to install the nokogiri gem.
|
|
22
|
+
# Chef Infra Client 12 and later ships with nokogiri included.
|
|
23
|
+
#
|
|
24
|
+
# @example
|
|
25
|
+
#
|
|
26
|
+
# # bad
|
|
27
|
+
# include_recipe 'xml::ruby'
|
|
28
|
+
#
|
|
29
|
+
class IncludingXMLRubyRecipe < Cop
|
|
30
|
+
MSG = 'Do not include the deprecated xml::ruby recipe to install the nokogiri gem. Chef Infra Client 12 and later ships with nokogiri included.'.freeze
|
|
31
|
+
|
|
32
|
+
def_node_matcher :xml_ruby_recipe?, <<-PATTERN
|
|
33
|
+
(send nil? :include_recipe (str "xml::ruby"))
|
|
34
|
+
PATTERN
|
|
35
|
+
|
|
36
|
+
def on_send(node)
|
|
37
|
+
xml_ruby_recipe?(node) do
|
|
38
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def autocorrect(node)
|
|
43
|
+
lambda do |corrector|
|
|
44
|
+
corrector.remove(node.loc.expression)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
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
|
+
module RuboCop
|
|
18
|
+
module Cop
|
|
19
|
+
module Chef
|
|
20
|
+
module ChefDeprecations
|
|
21
|
+
# Don't include the deprecated yum DNF compatibility recipe, which is no longer necessary
|
|
22
|
+
# as Chef Infra Client includes DNF package support
|
|
23
|
+
#
|
|
24
|
+
# @example
|
|
25
|
+
#
|
|
26
|
+
# # bad
|
|
27
|
+
# include_recipe 'yum::dnf_yum_compat'
|
|
28
|
+
#
|
|
29
|
+
class IncludingYumDNFCompatRecipe < Cop
|
|
30
|
+
MSG = 'Do not include the deprecated yum::dnf_yum_compat default recipe to install yum on dnf systems. Chef Infra Client now includes built in support for DNF packages.'.freeze
|
|
31
|
+
|
|
32
|
+
def_node_matcher :yum_dnf_compat_recipe_usage?, <<-PATTERN
|
|
33
|
+
(send nil? :include_recipe (str "yum::dnf_yum_compat"))
|
|
34
|
+
PATTERN
|
|
35
|
+
|
|
36
|
+
def on_send(node)
|
|
37
|
+
yum_dnf_compat_recipe_usage?(node) do
|
|
38
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def autocorrect(node)
|
|
43
|
+
lambda do |corrector|
|
|
44
|
+
corrector.remove(node.loc.expression)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|