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
|
@@ -18,29 +18,30 @@
|
|
|
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
|
+
# Don't use the deprecated 'attribute' metadata value
|
|
23
|
+
#
|
|
24
|
+
# @example
|
|
25
|
+
#
|
|
26
|
+
# # bad in metadata.rb:
|
|
27
|
+
#
|
|
28
|
+
# attribute 'zookeeper_bridge/server',
|
|
29
|
+
# display_name: 'zookeeper server',
|
|
30
|
+
# description: 'Zookeeper server address.',
|
|
31
|
+
# type: 'string',
|
|
32
|
+
# required: 'optional',
|
|
33
|
+
# default: '"127.0.0.1:2181"'
|
|
34
|
+
class AttributeMetadata < Cop
|
|
35
|
+
MSG = "Don't use the deprecated 'attribute' metadata value".freeze
|
|
33
36
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
def on_send(node)
|
|
38
|
-
add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :attribute
|
|
39
|
-
end
|
|
37
|
+
def on_send(node)
|
|
38
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :attribute
|
|
39
|
+
end
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
def autocorrect(node)
|
|
42
|
+
lambda do |corrector|
|
|
43
|
+
corrector.remove(node.loc.expression)
|
|
44
|
+
end
|
|
44
45
|
end
|
|
45
46
|
end
|
|
46
47
|
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
|
+
|
|
18
|
+
module RuboCop
|
|
19
|
+
module Cop
|
|
20
|
+
module Chef
|
|
21
|
+
module ChefDeprecations
|
|
22
|
+
# Chef::REST was removed in Chef Infra Client 13.
|
|
23
|
+
#
|
|
24
|
+
# @example
|
|
25
|
+
#
|
|
26
|
+
# # bad
|
|
27
|
+
# require 'chef/rest'
|
|
28
|
+
# Chef::REST::RESTRequest.new(:GET, FOO, nil).call
|
|
29
|
+
#
|
|
30
|
+
class UsesChefRESTHelpers < Cop
|
|
31
|
+
MSG = "Don't use the helpers in Chef::REST which were removed in Chef Infra Client 13".freeze
|
|
32
|
+
|
|
33
|
+
def_node_matcher :require_rest?, <<-PATTERN
|
|
34
|
+
(send nil? :require ( str "chef/rest"))
|
|
35
|
+
PATTERN
|
|
36
|
+
|
|
37
|
+
def_node_matcher :rest_const?, <<-PATTERN
|
|
38
|
+
(const (const nil? :Chef) :REST)
|
|
39
|
+
PATTERN
|
|
40
|
+
|
|
41
|
+
def on_send(node)
|
|
42
|
+
require_rest?(node) do
|
|
43
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def on_const(node)
|
|
48
|
+
rest_const?(node) do
|
|
49
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
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 the :remove action in the chocolatey_package resource instead of :uninstall which was removed in Chef Infra Client 14+
|
|
23
|
+
#
|
|
24
|
+
# @example
|
|
25
|
+
#
|
|
26
|
+
# # bad
|
|
27
|
+
# chocolatey_package 'nginx' do
|
|
28
|
+
# action :uninstall
|
|
29
|
+
# end
|
|
30
|
+
#
|
|
31
|
+
# # good
|
|
32
|
+
# chocolatey_package 'nginx' do
|
|
33
|
+
# action :remove
|
|
34
|
+
# end
|
|
35
|
+
#
|
|
36
|
+
class ChocolateyPackageUninstallAction < Cop
|
|
37
|
+
include RuboCop::Chef::CookbookHelpers
|
|
38
|
+
|
|
39
|
+
MSG = 'Use the :remove action in the chocolatey_package resource instead of :uninstall which was removed in Chef Infra Client 14+'.freeze
|
|
40
|
+
|
|
41
|
+
def on_block(node)
|
|
42
|
+
match_property_in_resource?(:chocolatey_package, 'action', node) do |choco_action|
|
|
43
|
+
choco_action.arguments.each do |action|
|
|
44
|
+
add_offense(action, location: :expression, message: MSG, severity: :refactor) if action.source == ':uninstall'
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def autocorrect(node)
|
|
50
|
+
lambda do |corrector|
|
|
51
|
+
corrector.replace(node.loc.expression, ':remove')
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
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 'conflicts' metadata value
|
|
23
|
+
#
|
|
24
|
+
# @example
|
|
25
|
+
#
|
|
26
|
+
# # bad in metadata.rb:
|
|
27
|
+
#
|
|
28
|
+
# conflicts "another_cookbook"
|
|
29
|
+
#
|
|
30
|
+
class ConflictsMetadata < Cop
|
|
31
|
+
MSG = "Don't use the deprecated 'conflicts' 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 == :conflicts
|
|
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
|
|
@@ -17,29 +17,31 @@
|
|
|
17
17
|
module RuboCop
|
|
18
18
|
module Cop
|
|
19
19
|
module Chef
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
20
|
+
module ChefDeprecations
|
|
21
|
+
# Don't depend on the deprecated compat_resource cookbook made obsolete by Chef 12.19+
|
|
22
|
+
#
|
|
23
|
+
# @example
|
|
24
|
+
#
|
|
25
|
+
# # bad
|
|
26
|
+
# depends 'compat_resource'
|
|
27
|
+
#
|
|
28
|
+
class CookbookDependsOnCompatResource < Cop
|
|
29
|
+
MSG = "Don't depend on the deprecated compat_resource cookbook made obsolete by Chef 12.19+".freeze
|
|
29
30
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
def_node_matcher :depends_compat_resource?, <<-PATTERN
|
|
32
|
+
(send nil? :depends (str {"compat_resource"}))
|
|
33
|
+
PATTERN
|
|
33
34
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
def on_send(node)
|
|
36
|
+
depends_compat_resource?(node) do
|
|
37
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor)
|
|
38
|
+
end
|
|
37
39
|
end
|
|
38
|
-
end
|
|
39
40
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
def autocorrect(node)
|
|
42
|
+
lambda do |corrector|
|
|
43
|
+
corrector.remove(node.loc.expression)
|
|
44
|
+
end
|
|
43
45
|
end
|
|
44
46
|
end
|
|
45
47
|
end
|
|
@@ -17,23 +17,25 @@
|
|
|
17
17
|
module RuboCop
|
|
18
18
|
module Cop
|
|
19
19
|
module Chef
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
20
|
+
module ChefDeprecations
|
|
21
|
+
# Don't depend on the partial_search cookbook made obsolete by Chef 13
|
|
22
|
+
#
|
|
23
|
+
# @example
|
|
24
|
+
#
|
|
25
|
+
# # bad
|
|
26
|
+
# depends 'partial_search'
|
|
27
|
+
#
|
|
28
|
+
class CookbookDependsOnPartialSearch < Cop
|
|
29
|
+
MSG = "Don't depend on the deprecated partial_search cookbook made obsolete by Chef 13".freeze
|
|
29
30
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
def_node_matcher :depends_partial_search?, <<-PATTERN
|
|
32
|
+
(send nil? :depends (str {"partial_search"}))
|
|
33
|
+
PATTERN
|
|
33
34
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
def on_send(node)
|
|
36
|
+
depends_partial_search?(node) do
|
|
37
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor)
|
|
38
|
+
end
|
|
37
39
|
end
|
|
38
40
|
end
|
|
39
41
|
end
|
|
@@ -17,23 +17,25 @@
|
|
|
17
17
|
module RuboCop
|
|
18
18
|
module Cop
|
|
19
19
|
module Chef
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
20
|
+
module ChefDeprecations
|
|
21
|
+
# Cookbooks should not depend on the deprecated Poise framework. They should instead
|
|
22
|
+
# be refactored as standard custom resources.
|
|
23
|
+
#
|
|
24
|
+
# @example
|
|
25
|
+
#
|
|
26
|
+
# # bad
|
|
27
|
+
# depends 'poise'
|
|
28
|
+
class CookbookDependsOnPoise < Cop
|
|
29
|
+
MSG = 'Cookbooks should not depend on the deprecated Poise framework'.freeze
|
|
29
30
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
def_node_matcher :depends_method?, <<-PATTERN
|
|
32
|
+
(send nil? :depends $str)
|
|
33
|
+
PATTERN
|
|
33
34
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
def on_send(node)
|
|
36
|
+
depends_method?(node) do |arg|
|
|
37
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor) if arg == s(:str, 'poise')
|
|
38
|
+
end
|
|
37
39
|
end
|
|
38
40
|
end
|
|
39
41
|
end
|
|
@@ -18,52 +18,54 @@
|
|
|
18
18
|
module RuboCop
|
|
19
19
|
module Cop
|
|
20
20
|
module Chef
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
21
|
+
module ChefDeprecations
|
|
22
|
+
# Don't use deprecated Mixins no longer included in Chef Infra Client 14 and later
|
|
23
|
+
#
|
|
24
|
+
# @example
|
|
25
|
+
#
|
|
26
|
+
# # bad
|
|
27
|
+
# include Chef::Mixin::LanguageIncludeAttribute
|
|
28
|
+
# include Chef::Mixin::RecipeDefinitionDSLCore
|
|
29
|
+
# include Chef::Mixin::LanguageIncludeRecipe
|
|
30
|
+
# include Chef::Mixin::Language
|
|
31
|
+
# include Chef::DSL::Recipe::FullDSL
|
|
32
|
+
# require 'chef/mixin/language'
|
|
33
|
+
# require 'chef/mixin/language_include_attribute'
|
|
34
|
+
# require 'chef/mixin/language_include_recipe'
|
|
34
35
|
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
class UsesDeprecatedMixins < Cop
|
|
37
|
+
MSG = "Don't use deprecated Mixins no longer included in Chef Infra Client 14 and later.".freeze
|
|
37
38
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
def_node_matcher :deprecated_mixin?, <<-PATTERN
|
|
40
|
+
(send nil? :include (const (const (const nil? :Chef) :Mixin) { :Language :LanguageIncludeAttribute :RecipeDefinitionDSLCore :LanguageIncludeRecipe }))
|
|
41
|
+
PATTERN
|
|
41
42
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
def_node_matcher :deprecated_dsl?, <<-PATTERN
|
|
44
|
+
(send nil? :include (const (const (const (const nil? :Chef) :DSL) :Recipe) :FullDSL))
|
|
45
|
+
PATTERN
|
|
45
46
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
def_node_matcher :dsl_mixin_require?, <<-PATTERN
|
|
48
|
+
(send nil? :require ( str {"chef/mixin/language" "chef/mixin/language_include_attribute" "chef/mixin/language_include_recipe"}))
|
|
49
|
+
PATTERN
|
|
49
50
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
def on_send(node)
|
|
52
|
+
deprecated_mixin?(node) do
|
|
53
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor)
|
|
54
|
+
end
|
|
54
55
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
deprecated_dsl?(node) do
|
|
57
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor)
|
|
58
|
+
end
|
|
58
59
|
|
|
59
|
-
|
|
60
|
-
|
|
60
|
+
dsl_mixin_require?(node) do
|
|
61
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor)
|
|
62
|
+
end
|
|
61
63
|
end
|
|
62
|
-
end
|
|
63
64
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
def autocorrect(node)
|
|
66
|
+
lambda do |corrector|
|
|
67
|
+
corrector.remove(node.loc.expression)
|
|
68
|
+
end
|
|
67
69
|
end
|
|
68
70
|
end
|
|
69
71
|
end
|
|
@@ -18,20 +18,22 @@
|
|
|
18
18
|
module RuboCop
|
|
19
19
|
module Cop
|
|
20
20
|
module Chef
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
21
|
+
module ChefDeprecations
|
|
22
|
+
# Don't use the deprecated easy_install resource removed in Chef 13
|
|
23
|
+
#
|
|
24
|
+
# @example
|
|
25
|
+
#
|
|
26
|
+
# # bad
|
|
27
|
+
# easy_install "my_thing" do
|
|
28
|
+
# bar
|
|
29
|
+
# end
|
|
30
|
+
#
|
|
31
|
+
class EasyInstallResource < Cop
|
|
32
|
+
MSG = "Don't use the deprecated easy_install resource removed in Chef 13".freeze
|
|
32
33
|
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
def on_send(node)
|
|
35
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :easy_install
|
|
36
|
+
end
|
|
35
37
|
end
|
|
36
38
|
end
|
|
37
39
|
end
|