cookstyle 6.13.3 → 6.16.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +0 -1
- data/config/cookstyle.yml +81 -46
- data/config/disable_all.yml +48 -4
- data/config/upstream.yml +175 -27
- data/cookstyle.gemspec +1 -0
- data/lib/cookstyle.rb +7 -7
- data/lib/cookstyle/version.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/block_guard_clause_string_only.rb +7 -9
- data/lib/rubocop/cop/chef/correctness/chef_application_fatal.rb +5 -9
- data/lib/rubocop/cop/chef/correctness/conditional_ruby_shellout.rb +5 -9
- data/lib/rubocop/cop/chef/correctness/dnf_package_allow_downgrades.rb +5 -8
- data/lib/rubocop/cop/chef/correctness/incorrect_library_injection.rb +11 -9
- data/lib/rubocop/cop/chef/correctness/invalid_default_action.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/invalid_notification_timing.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/invalid_platform_family_helper.rb +21 -4
- data/lib/rubocop/cop/chef/correctness/invalid_platform_family_values_in_case.rb +15 -23
- data/lib/rubocop/cop/chef/correctness/invalid_platform_helper.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/invalid_platform_metadata.rb +12 -14
- data/lib/rubocop/cop/chef/correctness/invalid_platform_values_in_case.rb +13 -22
- data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_family_helper.rb +4 -3
- data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_helper.rb +4 -3
- data/lib/rubocop/cop/chef/correctness/invalid_version_metadata.rb +3 -4
- data/lib/rubocop/cop/chef/correctness/lazy_eval_node_attribute_defaults.rb +5 -8
- data/lib/rubocop/cop/chef/correctness/macos_userdefaults_invalid_type.rb +67 -0
- data/lib/rubocop/cop/chef/correctness/malformed_value_for_platform.rb +4 -5
- data/lib/rubocop/cop/chef/correctness/metadata_missing_name.rb +5 -12
- data/lib/rubocop/cop/chef/correctness/node_normal.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/node_normal_unless.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/node_save.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/notifies_action_not_symbol.rb +11 -11
- data/lib/rubocop/cop/chef/correctness/openssl_password_helpers.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/powershell_delete_file.rb +4 -4
- data/lib/rubocop/cop/chef/correctness/resource_sets_internal_properties.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/resource_sets_name_property.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/resource_with_none_action.rb +6 -2
- data/lib/rubocop/cop/chef/correctness/scoped_file_exist.rb +6 -8
- data/lib/rubocop/cop/chef/correctness/service_resource.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/tmp_path.rb +3 -4
- data/lib/rubocop/cop/chef/{correctness → deprecation}/cb_depends_on_self.rb +6 -11
- data/lib/rubocop/cop/chef/deprecation/chef_handler_recipe.rb +5 -8
- data/lib/rubocop/cop/chef/deprecation/chef_handler_supports.rb +7 -10
- data/lib/rubocop/cop/chef/deprecation/chef_rest.rb +3 -3
- data/lib/rubocop/cop/chef/deprecation/chef_rewind.rb +15 -28
- data/lib/rubocop/cop/chef/deprecation/chef_windows_platform_helper.rb +5 -8
- data/lib/rubocop/cop/chef/deprecation/chefdk_generators.rb +3 -6
- data/lib/rubocop/cop/chef/deprecation/cheffile.rb +5 -7
- data/lib/rubocop/cop/chef/deprecation/chefspec_coverage_report.rb +5 -8
- data/lib/rubocop/cop/chef/deprecation/chefspec_legacy_runner.rb +5 -8
- data/lib/rubocop/cop/chef/deprecation/chocolatey_package_uninstall_action.rb +6 -8
- data/lib/rubocop/cop/chef/deprecation/depends_compat_resource.rb +5 -8
- data/lib/rubocop/cop/chef/deprecation/depends_partial_search.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/depends_poise.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/deprecated_chefspec_platform.rb +11 -14
- data/lib/rubocop/cop/chef/deprecation/deprecated_mixins.rb +11 -10
- data/lib/rubocop/cop/chef/deprecation/deprecated_platform_methods.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/deprecated_shellout_methods.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/deprecated_windows_version_check.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_properties.rb +8 -8
- data/lib/rubocop/cop/chef/deprecation/easy_install.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/eol_audit_mode.rb +4 -4
- data/lib/rubocop/cop/chef/deprecation/epic_fail.rb +5 -6
- data/lib/rubocop/cop/chef/deprecation/erl_call.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/hwrp_without_provides.rb +11 -12
- data/lib/rubocop/cop/chef/deprecation/inherits_compat_resource.rb +6 -8
- data/lib/rubocop/cop/chef/deprecation/launchd_deprecated_hash_property.rb +6 -9
- data/lib/rubocop/cop/chef/deprecation/legacy_notify_syntax.rb +5 -9
- data/lib/rubocop/cop/chef/deprecation/legacy_yum_cookbook_recipes.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/locale_lc_all_property.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/macos_userdefaults_global_property.rb +61 -0
- data/lib/rubocop/cop/chef/deprecation/name_property_and_default.rb +4 -9
- data/lib/rubocop/cop/chef/deprecation/node_methods_not_attributes.rb +6 -8
- data/lib/rubocop/cop/chef/deprecation/node_set.rb +6 -8
- data/lib/rubocop/cop/chef/deprecation/node_set_unless.rb +6 -8
- data/lib/rubocop/cop/chef/deprecation/node_set_without_level.rb +6 -4
- data/lib/rubocop/cop/chef/deprecation/partial_search_class_usage.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/partial_search_helper_usage.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/poise_archive.rb +7 -5
- data/lib/rubocop/cop/chef/deprecation/powershell_cookbook_helpers.rb +5 -9
- data/lib/rubocop/cop/chef/deprecation/require_recipe.rb +7 -7
- data/lib/rubocop/cop/chef/deprecation/resource_overrides_provides_method.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/resource_uses_dsl_name_method.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/resource_uses_only_resource_name.rb +8 -12
- data/lib/rubocop/cop/chef/deprecation/resource_uses_provider_base_method.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/resource_uses_updated_method.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/ruby_27_keyword_argument_warnings.rb +6 -10
- data/lib/rubocop/cop/chef/deprecation/ruby_block_create_action.rb +6 -8
- data/lib/rubocop/cop/chef/deprecation/run_command_helper.rb +4 -4
- data/lib/rubocop/cop/chef/deprecation/search_uses_positional_parameters.rb +6 -8
- data/lib/rubocop/cop/chef/deprecation/use_inline_resources.rb +5 -7
- data/lib/rubocop/cop/chef/deprecation/user_supports_property.rb +11 -14
- data/lib/rubocop/cop/chef/deprecation/verify_property_file_expansion.rb +6 -8
- data/lib/rubocop/cop/chef/deprecation/windows_feature_servermanagercmd.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/windows_task_change_action.rb +11 -16
- data/lib/rubocop/cop/chef/deprecation/windows_version_helpers.rb +4 -9
- data/lib/rubocop/cop/chef/deprecation/xml_ruby_recipe.rb +6 -8
- data/lib/rubocop/cop/chef/deprecation/yum_dnf_compat_recipe.rb +5 -8
- data/lib/rubocop/cop/chef/effortless/berksfile.rb +3 -5
- data/lib/rubocop/cop/chef/effortless/data_bags.rb +2 -2
- data/lib/rubocop/cop/chef/effortless/node_environment.rb +6 -3
- data/lib/rubocop/cop/chef/effortless/node_policygroup.rb +6 -3
- data/lib/rubocop/cop/chef/effortless/node_roles.rb +9 -6
- data/lib/rubocop/cop/chef/effortless/search_for_environments_or_roles.rb +4 -3
- data/lib/rubocop/cop/chef/effortless/search_used.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/allowed_actions_initializer.rb +17 -17
- data/lib/rubocop/cop/chef/modernize/apt_default_recipe.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/berksfile_source.rb +9 -9
- data/lib/rubocop/cop/chef/modernize/build_essential.rb +6 -8
- data/lib/rubocop/cop/chef/modernize/chef_14_resources.rb +5 -8
- data/lib/rubocop/cop/chef/modernize/chef_gem_nokogiri.rb +11 -10
- data/lib/rubocop/cop/chef/modernize/compile_time_resources.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/conditional_using_test.rb +5 -8
- data/lib/rubocop/cop/chef/modernize/cron_d_file_or_template.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/cron_manage_resource.rb +4 -6
- data/lib/rubocop/cop/chef/modernize/databag_helpers.rb +7 -8
- data/lib/rubocop/cop/chef/modernize/default_action_initializer.rb +12 -14
- data/lib/rubocop/cop/chef/modernize/defines_chefspec_matchers.rb +5 -8
- data/lib/rubocop/cop/chef/modernize/definitions.rb +3 -3
- data/lib/rubocop/cop/chef/modernize/depends_zypper_cookbook.rb +5 -8
- data/lib/rubocop/cop/chef/modernize/dsl_include_in_resource.rb +5 -8
- data/lib/rubocop/cop/chef/modernize/empty_resource_initialize.rb +5 -8
- data/lib/rubocop/cop/chef/modernize/execute_apt_update.rb +6 -4
- data/lib/rubocop/cop/chef/modernize/execute_sc_exe.rb +6 -9
- data/lib/rubocop/cop/chef/modernize/execute_sleep.rb +6 -11
- data/lib/rubocop/cop/chef/modernize/execute_sysctl.rb +5 -9
- data/lib/rubocop/cop/chef/modernize/execute_tzutil.rb +7 -4
- data/lib/rubocop/cop/chef/modernize/foodcritic_comments.rb +7 -12
- data/lib/rubocop/cop/chef/modernize/if_provides_default_action.rb +4 -6
- data/lib/rubocop/cop/chef/modernize/includes_mixin_shellout.rb +5 -8
- data/lib/rubocop/cop/chef/modernize/libarchive_file.rb +12 -9
- data/lib/rubocop/cop/chef/modernize/macos_user_defaults.rb +4 -6
- data/lib/rubocop/cop/chef/modernize/minitest_handler_usage.rb +5 -8
- data/lib/rubocop/cop/chef/modernize/node_roles_include.rb +5 -9
- data/lib/rubocop/cop/chef/modernize/ohai_default_recipe.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/openssl_rsa_key_resource.rb +4 -6
- data/lib/rubocop/cop/chef/modernize/openssl_x509_resource.rb +4 -6
- data/lib/rubocop/cop/chef/modernize/osx_config_profile_resource.rb +5 -6
- data/lib/rubocop/cop/chef/modernize/powershell_expand_archive.rb +3 -4
- data/lib/rubocop/cop/chef/modernize/powershell_guard_interpreter.rb +5 -9
- data/lib/rubocop/cop/chef/modernize/powershell_install_package.rb +3 -4
- data/lib/rubocop/cop/chef/modernize/powershell_install_windowsfeature.rb +3 -4
- data/lib/rubocop/cop/chef/modernize/property_with_name_attribute.rb +5 -9
- data/lib/rubocop/cop/chef/modernize/provides_initializer.rb +14 -16
- data/lib/rubocop/cop/chef/modernize/resource_name_initializer.rb +11 -15
- data/lib/rubocop/cop/chef/modernize/resource_set_or_return.rb +3 -4
- data/lib/rubocop/cop/chef/modernize/resource_with_attributes.rb +7 -8
- data/lib/rubocop/cop/chef/modernize/respond_to_compile_time.rb +4 -9
- data/lib/rubocop/cop/chef/modernize/respond_to_metadata.rb +20 -16
- data/lib/rubocop/cop/chef/modernize/respond_to_provides.rb +6 -8
- data/lib/rubocop/cop/chef/modernize/respond_to_resource_name.rb +6 -8
- data/lib/rubocop/cop/chef/modernize/sc_windows_resource.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/seven_zip_archive.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/shell_out_helper.rb +3 -8
- data/lib/rubocop/cop/chef/modernize/shellouts_to_chocolatey.rb +5 -7
- data/lib/rubocop/cop/chef/modernize/simplify_apt_ppa_setup.rb +6 -10
- data/lib/rubocop/cop/chef/modernize/systctl_param_resource.rb +4 -6
- data/lib/rubocop/cop/chef/modernize/unnecessary_mixlib_shellout_require.rb +5 -8
- data/lib/rubocop/cop/chef/modernize/use_multipackage_installs.rb +14 -13
- data/lib/rubocop/cop/chef/modernize/use_require_relative.rb +6 -9
- data/lib/rubocop/cop/chef/modernize/whyrun_supported_true.rb +5 -8
- data/lib/rubocop/cop/chef/modernize/windows_default_recipe.rb +5 -8
- data/lib/rubocop/cop/chef/modernize/windows_registry_uac.rb +6 -7
- data/lib/rubocop/cop/chef/modernize/windows_zipfile.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/zipfile_resource.rb +3 -3
- data/lib/rubocop/cop/chef/modernize/zypper_repo.rb +4 -6
- data/lib/rubocop/cop/chef/redundant/apt_repository_distribution_default.rb +5 -8
- data/lib/rubocop/cop/chef/redundant/apt_repository_notifies_apt_update.rb +6 -8
- data/lib/rubocop/cop/chef/redundant/attribute_metadata.rb +4 -6
- data/lib/rubocop/cop/chef/redundant/conflicts_metadata.rb +4 -6
- data/lib/rubocop/cop/chef/redundant/custom_resource_with_allowed_actions.rb +6 -9
- data/lib/rubocop/cop/chef/redundant/grouping_metadata.rb +4 -5
- data/lib/rubocop/cop/chef/redundant/long_description_metadata.rb +4 -5
- data/lib/rubocop/cop/chef/redundant/multiple_platform_checks.rb +7 -9
- data/lib/rubocop/cop/chef/redundant/name_property_and_required.rb +2 -2
- data/lib/rubocop/cop/chef/redundant/ohai_attribute_to_string.rb +6 -10
- data/lib/rubocop/cop/chef/redundant/property_splat_regex.rb +8 -9
- data/lib/rubocop/cop/chef/redundant/property_with_default_and_required.rb +4 -9
- data/lib/rubocop/cop/chef/redundant/provides_metadata.rb +4 -5
- data/lib/rubocop/cop/chef/redundant/recipe_metadata.rb +4 -5
- data/lib/rubocop/cop/chef/redundant/replaces_metadata.rb +4 -5
- data/lib/rubocop/cop/chef/redundant/resource_with_nothing_action.rb +5 -8
- data/lib/rubocop/cop/chef/redundant/sensitive_property_in_resource.rb +5 -7
- data/lib/rubocop/cop/chef/redundant/string_property_with_nil_default.rb +6 -9
- data/lib/rubocop/cop/chef/redundant/suggests_metadata.rb +4 -5
- data/lib/rubocop/cop/chef/redundant/unnecessary_name_property.rb +9 -9
- data/lib/rubocop/cop/chef/redundant/use_create_if_missing.rb +7 -9
- data/lib/rubocop/cop/chef/sharing/default_maintainer_metadata.rb +2 -2
- data/lib/rubocop/cop/chef/sharing/empty_metadata_field.rb +4 -3
- data/lib/rubocop/cop/chef/sharing/include_property_descriptions.rb +5 -5
- data/lib/rubocop/cop/chef/sharing/include_resource_descriptions.rb +7 -7
- data/lib/rubocop/cop/chef/sharing/include_resource_examples.rb +6 -6
- data/lib/rubocop/cop/chef/sharing/insecure_cookbook_url.rb +6 -8
- data/lib/rubocop/cop/chef/sharing/invalid_license_string.rb +7 -12
- data/lib/rubocop/cop/chef/style/chef_whaaat.rb +3 -4
- data/lib/rubocop/cop/chef/style/comment_sentence_spacing.rb +5 -7
- data/lib/rubocop/cop/chef/style/comments_copyright_format.rb +5 -9
- data/lib/rubocop/cop/chef/style/comments_default_copyright.rb +5 -7
- data/lib/rubocop/cop/chef/style/comments_format.rb +13 -16
- data/lib/rubocop/cop/chef/style/file_mode.rb +38 -19
- data/lib/rubocop/cop/chef/style/immediate_notification_timing.rb +6 -8
- data/lib/rubocop/cop/chef/style/negating_only_if.rb +5 -9
- data/lib/rubocop/cop/chef/style/overly_complex_supports_depends_metadata.rb +5 -9
- data/lib/rubocop/cop/chef/style/simplify_platform_major_version_check.rb +6 -8
- data/lib/rubocop/cop/chef/style/true_false_resource_properties.rb +4 -9
- data/lib/rubocop/cop/chef/style/unnecessary_os_check.rb +17 -28
- data/lib/rubocop/cop/chef/style/unnecessary_platform_case_statement.rb +6 -10
- data/lib/rubocop/cop/chef/style/use_platform_helpers.rb +11 -19
- data/lib/rubocop/monkey_patches/{cop.rb → base.rb} +1 -1
- metadata +9 -7
@@ -26,8 +26,9 @@ module RuboCop
|
|
26
26
|
#
|
27
27
|
# let(:chef_run) { ChefSpec::ServerRunner.new(platform: 'ubuntu', version: '14.04') }
|
28
28
|
#
|
29
|
-
class DeprecatedChefSpecPlatform <
|
29
|
+
class DeprecatedChefSpecPlatform < Base
|
30
30
|
include RuboCop::Chef::CookbookHelpers
|
31
|
+
extend AutoCorrector
|
31
32
|
|
32
33
|
MSG = "Use currently supported platforms in ChefSpec listed at https://github.com/chefspec/fauxhai/blob/master/PLATFORMS.md. Fauxhai / ChefSpec will perform fuzzy matching on platform version so it's always best to be less specific ie. 10 instead of 10.3"
|
33
34
|
|
@@ -65,25 +66,26 @@ module RuboCop
|
|
65
66
|
'opensuse' => {
|
66
67
|
'< 14' => true,
|
67
68
|
'~> 42.0' => true,
|
69
|
+
'= 15.0' => '15',
|
68
70
|
},
|
69
71
|
'debian' => {
|
70
72
|
'< 8' => true,
|
71
|
-
'> 8.0, < 8.
|
72
|
-
'> 9.0, < 9.
|
73
|
+
'> 8.0, < 8.11' => '8',
|
74
|
+
'> 9.0, < 9.11' => '9',
|
73
75
|
},
|
74
76
|
'centos' => {
|
75
77
|
'< 6.0' => true,
|
76
|
-
'~> 6.0, < 6.
|
78
|
+
'~> 6.0, < 6.10' => '6',
|
77
79
|
'~> 7.0, < 7.6 ' => '7',
|
78
80
|
},
|
79
81
|
'redhat' => {
|
80
82
|
'< 6.0' => true,
|
81
|
-
'~> 6.0, < 6.
|
83
|
+
'~> 6.0, < 6.10' => '6',
|
82
84
|
'~> 7.0, < 7.6' => '7',
|
83
85
|
},
|
84
86
|
'oracle' => {
|
85
87
|
'< 6.0' => true,
|
86
|
-
'~> 6.0, < 6.
|
88
|
+
'~> 6.0, < 6.10' => '6',
|
87
89
|
'~> 7.0, < 7.6 ' => '7',
|
88
90
|
},
|
89
91
|
}.freeze
|
@@ -115,14 +117,9 @@ module RuboCop
|
|
115
117
|
|
116
118
|
def on_send(node)
|
117
119
|
chefspec_definition?(node) do |plat, ver|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
def autocorrect(node)
|
123
|
-
chefspec_definition?(node) do |plat, ver|
|
124
|
-
if replacement = replacement_string(plat.value, ver.value) # rubocop: disable Lint/AssignmentInCondition
|
125
|
-
lambda do |corrector|
|
120
|
+
next unless legacy_chefspec_platform(plat.value, ver.value)
|
121
|
+
add_offense(node, message: MSG, severity: :warning) do |corrector|
|
122
|
+
if replacement = replacement_string(plat.value, ver.value) # rubocop: disable Lint/AssignmentInCondition
|
126
123
|
corrector.replace(ver.loc.expression, "'#{replacement}'")
|
127
124
|
end
|
128
125
|
end
|
@@ -34,8 +34,9 @@ module RuboCop
|
|
34
34
|
# require 'chef/mixin/language_include_attribute'
|
35
35
|
# require 'chef/mixin/language_include_recipe'
|
36
36
|
#
|
37
|
-
class UsesDeprecatedMixins <
|
37
|
+
class UsesDeprecatedMixins < Base
|
38
38
|
include RangeHelp
|
39
|
+
extend AutoCorrector
|
39
40
|
|
40
41
|
MSG = "Don't use deprecated Mixins no longer included in Chef Infra Client 14 and later."
|
41
42
|
|
@@ -53,21 +54,21 @@ module RuboCop
|
|
53
54
|
|
54
55
|
def on_send(node)
|
55
56
|
deprecated_mixin?(node) do
|
56
|
-
add_offense(node,
|
57
|
+
add_offense(node, message: MSG, severity: :warning) do |corrector|
|
58
|
+
corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
|
59
|
+
end
|
57
60
|
end
|
58
61
|
|
59
62
|
deprecated_dsl?(node) do
|
60
|
-
add_offense(node,
|
63
|
+
add_offense(node, message: MSG, severity: :warning) do |corrector|
|
64
|
+
corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
|
65
|
+
end
|
61
66
|
end
|
62
67
|
|
63
68
|
dsl_mixin_require?(node) do
|
64
|
-
add_offense(node,
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
def autocorrect(node)
|
69
|
-
lambda do |corrector|
|
70
|
-
corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
|
69
|
+
add_offense(node, message: MSG, severity: :warning) do |corrector|
|
70
|
+
corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
|
71
|
+
end
|
71
72
|
end
|
72
73
|
end
|
73
74
|
end
|
@@ -38,7 +38,7 @@ module RuboCop
|
|
38
38
|
# resource = Chef::Resource::File.new("/tmp/foo.xyz", run_context)
|
39
39
|
# provider = resource.provider_for_action(:create)
|
40
40
|
#
|
41
|
-
class DeprecatedPlatformMethods <
|
41
|
+
class DeprecatedPlatformMethods < Base
|
42
42
|
MSG = 'Use provider_for_action instead of the deprecated Chef::Platform methods in resources, which were removed in Chef Infra Client 13.'
|
43
43
|
|
44
44
|
def_node_matcher :platform_method?, <<-PATTERN
|
@@ -47,7 +47,7 @@ module RuboCop
|
|
47
47
|
|
48
48
|
def on_send(node)
|
49
49
|
platform_method?(node) do
|
50
|
-
add_offense(node,
|
50
|
+
add_offense(node, message: MSG, severity: :warning)
|
51
51
|
end
|
52
52
|
end
|
53
53
|
end
|
@@ -39,7 +39,7 @@ module RuboCop
|
|
39
39
|
# shell_out!('foo')
|
40
40
|
# shell_out!('foo', default_env: false) # replaces shell_out_with_systems_locale
|
41
41
|
#
|
42
|
-
class DeprecatedShelloutMethods <
|
42
|
+
class DeprecatedShelloutMethods < Base
|
43
43
|
extend TargetChefVersion
|
44
44
|
|
45
45
|
minimum_target_chef_version '14.3'
|
@@ -57,7 +57,7 @@ module RuboCop
|
|
57
57
|
MSG = 'Many legacy specialized shell_out methods were replaced in Chef Infra Client 14.3 and removed in Chef Infra Client 15. Use shell_out and any additional options if necessary.'
|
58
58
|
|
59
59
|
def on_send(node)
|
60
|
-
add_offense(node,
|
60
|
+
add_offense(node, message: MSG, severity: :warning) if DEPRECATED_SHELLOUT_METHODS.include?(node.method_name)
|
61
61
|
end
|
62
62
|
end
|
63
63
|
end
|
@@ -28,11 +28,11 @@ module RuboCop
|
|
28
28
|
# # do some legacy things
|
29
29
|
# end
|
30
30
|
#
|
31
|
-
class DeprecatedWindowsVersionCheck <
|
31
|
+
class DeprecatedWindowsVersionCheck < Base
|
32
32
|
MSG = "Don't use the deprecated older_than_win_2012_or_8? helper. Windows versions before 2012 and 8 are now end of life and this helper will always return false."
|
33
33
|
|
34
34
|
def on_send(node)
|
35
|
-
add_offense(node,
|
35
|
+
add_offense(node, message: MSG, severity: :warning) if node.method_name == :older_than_win_2012_or_8?
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
@@ -41,9 +41,10 @@ module RuboCop
|
|
41
41
|
# action :create
|
42
42
|
# end
|
43
43
|
#
|
44
|
-
class DeprecatedYumRepositoryProperties <
|
44
|
+
class DeprecatedYumRepositoryProperties < Base
|
45
45
|
include RuboCop::Chef::CookbookHelpers
|
46
46
|
extend TargetChefVersion
|
47
|
+
extend AutoCorrector
|
47
48
|
|
48
49
|
minimum_target_chef_version '12.14'
|
49
50
|
|
@@ -52,16 +53,15 @@ module RuboCop
|
|
52
53
|
def on_block(node)
|
53
54
|
%w(url keyurl mirrorexpire).each do |prop|
|
54
55
|
match_property_in_resource?(:yum_repository, prop, node) do |prop_node|
|
55
|
-
add_offense(prop_node,
|
56
|
+
add_offense(prop_node, message: MSG, severity: :warning) do |corrector|
|
57
|
+
corrector.replace(prop_node.loc.expression, prop_node.loc.expression.source
|
58
|
+
.gsub(/^url/, 'baseurl')
|
59
|
+
.gsub(/^keyurl/, 'gpgkey')
|
60
|
+
.gsub(/^mirrorexpire/, 'mirror_expire'))
|
61
|
+
end
|
56
62
|
end
|
57
63
|
end
|
58
64
|
end
|
59
|
-
|
60
|
-
def autocorrect(node)
|
61
|
-
lambda do |corrector|
|
62
|
-
corrector.replace(node.loc.expression, node.loc.expression.source.gsub(/^url/, 'baseurl').gsub(/^keyurl/, 'gpgkey').gsub(/^mirrorexpire/, 'mirror_expire'))
|
63
|
-
end
|
64
|
-
end
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
@@ -29,11 +29,11 @@ module RuboCop
|
|
29
29
|
# bar
|
30
30
|
# end
|
31
31
|
#
|
32
|
-
class EasyInstallResource <
|
32
|
+
class EasyInstallResource < Base
|
33
33
|
MSG = "Don't use the deprecated easy_install resource removed in Chef Infra Client 13"
|
34
34
|
|
35
35
|
def on_send(node)
|
36
|
-
add_offense(node,
|
36
|
+
add_offense(node, message: MSG, severity: :warning) if node.method_name == :easy_install
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
@@ -19,7 +19,7 @@ module RuboCop
|
|
19
19
|
module Cop
|
20
20
|
module Chef
|
21
21
|
module ChefDeprecations
|
22
|
-
# The beta Audit Mode for Chef Infra Client was removed in Chef Infra Client 15.0. Users should instead use InSpec and the audit cookbook. See https://www.inspec.io/ for more
|
22
|
+
# The beta Audit Mode for Chef Infra Client was removed in Chef Infra Client 15.0. Users should instead use InSpec and the audit cookbook. See https://www.inspec.io/ for more information.
|
23
23
|
#
|
24
24
|
# @example
|
25
25
|
#
|
@@ -32,14 +32,14 @@ module RuboCop
|
|
32
32
|
# end
|
33
33
|
# end
|
34
34
|
|
35
|
-
class EOLAuditModeUsage <
|
36
|
-
MSG = 'The beta Audit Mode feature in Chef Infra Client was removed in Chef Infra Client 15.0. Users should instead use InSpec and the audit cookbook. See https://www.inspec.io/ for more
|
35
|
+
class EOLAuditModeUsage < Base
|
36
|
+
MSG = 'The beta Audit Mode feature in Chef Infra Client was removed in Chef Infra Client 15.0. Users should instead use InSpec and the audit cookbook. See https://www.inspec.io/ for more information.'
|
37
37
|
|
38
38
|
def_node_matcher :control_group?, '(send nil? :control_group ...)'
|
39
39
|
|
40
40
|
def on_send(node)
|
41
41
|
control_group?(node) do
|
42
|
-
add_offense(node
|
42
|
+
add_offense(node.loc.selector, message: MSG, severity: :warning)
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
@@ -34,15 +34,14 @@ module RuboCop
|
|
34
34
|
# ignore_failure true
|
35
35
|
# end
|
36
36
|
#
|
37
|
-
class EpicFail <
|
37
|
+
class EpicFail < Base
|
38
|
+
extend AutoCorrector
|
39
|
+
|
38
40
|
MSG = 'Use ignore_failure method instead of the deprecated epic_fail method'
|
39
41
|
|
40
42
|
def on_send(node)
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
def autocorrect(node)
|
45
|
-
lambda do |corrector|
|
43
|
+
return unless node.method_name == :epic_fail
|
44
|
+
add_offense(node, message: MSG, severity: :warning) do |corrector|
|
46
45
|
corrector.replace(node.loc.expression, 'ignore_failure true')
|
47
46
|
end
|
48
47
|
end
|
@@ -29,11 +29,11 @@ module RuboCop
|
|
29
29
|
# bar
|
30
30
|
# end
|
31
31
|
#
|
32
|
-
class ErlCallResource <
|
32
|
+
class ErlCallResource < Base
|
33
33
|
MSG = "Don't use the deprecated erl_call resource removed in Chef Infra Client 13"
|
34
34
|
|
35
35
|
def on_send(node)
|
36
|
-
add_offense(node,
|
36
|
+
add_offense(node, message: MSG, severity: :warning) if node.method_name == :erl_call
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
@@ -82,7 +82,9 @@ module RuboCop
|
|
82
82
|
# # better
|
83
83
|
# Convert your legacy HWRPs to custom resources
|
84
84
|
#
|
85
|
-
class HWRPWithoutProvides <
|
85
|
+
class HWRPWithoutProvides < Base
|
86
|
+
extend AutoCorrector
|
87
|
+
|
86
88
|
MSG = 'In Chef Infra Client 16 and later a legacy HWRP resource must use `provides` to define how the resource is called in recipes or other resources. To maintain compatibility with Chef Infra Client < 16 use both `resource_name` and `provides`.'
|
87
89
|
|
88
90
|
def_node_matcher :HWRP?, <<-PATTERN
|
@@ -102,8 +104,15 @@ module RuboCop
|
|
102
104
|
def_node_search :resource_name, '(send nil? :resource_name (sym $_))'
|
103
105
|
|
104
106
|
def on_class(node)
|
107
|
+
return if has_provides?
|
105
108
|
HWRP?(node) do |inherit|
|
106
|
-
add_offense(inherit,
|
109
|
+
add_offense(inherit, message: MSG, severity: :warning) do |corrector|
|
110
|
+
resource_name_ast(node) do |ast_match|
|
111
|
+
# build a new string to add after that includes the new line and the proper indentation
|
112
|
+
new_string = "\n" + ast_match.source.dup.gsub('resource_name', 'provides').prepend(' ' * indentation(ast_match))
|
113
|
+
corrector.insert_after(ast_match.source_range, new_string)
|
114
|
+
end
|
115
|
+
end
|
107
116
|
end
|
108
117
|
end
|
109
118
|
|
@@ -125,16 +134,6 @@ module RuboCop
|
|
125
134
|
def indentation(node)
|
126
135
|
node.source_range.source_line =~ /\S/
|
127
136
|
end
|
128
|
-
|
129
|
-
def autocorrect(node)
|
130
|
-
lambda do |corrector|
|
131
|
-
resource_name_ast(node) do |ast_match|
|
132
|
-
# build a new string to add after that includes the new line and the proper indentation
|
133
|
-
new_string = "\n" + ast_match.source.dup.gsub('resource_name', 'provides').prepend(' ' * indentation(ast_match))
|
134
|
-
corrector.insert_after(ast_match.source_range, new_string)
|
135
|
-
end
|
136
|
-
end
|
137
|
-
end
|
138
137
|
end
|
139
138
|
end
|
140
139
|
end
|
@@ -37,7 +37,9 @@ module RuboCop
|
|
37
37
|
# # better
|
38
38
|
# Write a custom resource using the custom resource DSL and avoid class based HWRPs entirely
|
39
39
|
#
|
40
|
-
class ResourceInheritsFromCompatResource <
|
40
|
+
class ResourceInheritsFromCompatResource < Base
|
41
|
+
extend AutoCorrector
|
42
|
+
|
41
43
|
MSG = "HWRP style resource should inherit from the 'Chef::Resource' class and not the 'ChefCompat::Resource' class from the deprecated compat_resource cookbook."
|
42
44
|
|
43
45
|
def_node_matcher :inherits_from_compat_resource?, <<-PATTERN
|
@@ -46,13 +48,9 @@ module RuboCop
|
|
46
48
|
|
47
49
|
def on_class(node)
|
48
50
|
inherits_from_compat_resource?(node) do
|
49
|
-
add_offense(node,
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
def autocorrect(node)
|
54
|
-
lambda do |corrector|
|
55
|
-
corrector.replace(node.loc.expression, node.loc.expression.source.gsub('ChefCompat', 'Chef'))
|
51
|
+
add_offense(node, message: MSG, severity: :warning) do |corrector|
|
52
|
+
corrector.replace(node.loc.expression, node.loc.expression.source.gsub('ChefCompat', 'Chef'))
|
53
|
+
end
|
56
54
|
end
|
57
55
|
end
|
58
56
|
end
|
@@ -33,23 +33,20 @@ module RuboCop
|
|
33
33
|
# plist_hash foo: 'bar'
|
34
34
|
# end
|
35
35
|
#
|
36
|
-
class LaunchdDeprecatedHashProperty <
|
36
|
+
class LaunchdDeprecatedHashProperty < Base
|
37
37
|
include RuboCop::Chef::CookbookHelpers
|
38
38
|
extend TargetChefVersion
|
39
|
+
extend AutoCorrector
|
39
40
|
|
40
41
|
minimum_target_chef_version '12.19'
|
41
42
|
|
42
43
|
MSG = "The launchd resource's hash property was renamed to plist_hash in Chef Infra Client 13+ to avoid conflicts with Ruby's hash class."
|
43
44
|
|
44
45
|
def on_block(node)
|
45
|
-
match_property_in_resource?(:launchd, 'hash', node) do |
|
46
|
-
add_offense(
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
def autocorrect(node)
|
51
|
-
lambda do |corrector|
|
52
|
-
corrector.replace(node.loc.expression, node.loc.expression.source.gsub(/^hash/, 'plist_hash'))
|
46
|
+
match_property_in_resource?(:launchd, 'hash', node) do |offense|
|
47
|
+
add_offense(offense.loc.expression, message: MSG, severity: :warning) do |corrector|
|
48
|
+
corrector.replace(offense.loc.expression, offense.loc.expression.source.gsub(/^hash/, 'plist_hash'))
|
49
|
+
end
|
53
50
|
end
|
54
51
|
end
|
55
52
|
end
|
@@ -57,7 +57,9 @@ module RuboCop
|
|
57
57
|
# subscribes :restart, "service[#{service_name_variable}]", :immediately
|
58
58
|
# end
|
59
59
|
#
|
60
|
-
class LegacyNotifySyntax <
|
60
|
+
class LegacyNotifySyntax < Base
|
61
|
+
extend AutoCorrector
|
62
|
+
|
61
63
|
MSG = 'Use the new-style notification syntax which allows you to notify resources defined later in a recipe or resource.'
|
62
64
|
|
63
65
|
def_node_matcher :legacy_notify?, <<-PATTERN
|
@@ -65,14 +67,8 @@ module RuboCop
|
|
65
67
|
PATTERN
|
66
68
|
|
67
69
|
def on_send(node)
|
68
|
-
legacy_notify?(node) do
|
69
|
-
add_offense(node,
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
def autocorrect(node)
|
74
|
-
lambda do |corrector|
|
75
|
-
legacy_notify?(node) do |notify_type, action, type, name, timing|
|
70
|
+
legacy_notify?(node) do |notify_type, action, type, name, timing|
|
71
|
+
add_offense(node, message: MSG, severity: :warning) do |corrector|
|
76
72
|
service_value = case name.type
|
77
73
|
when :str
|
78
74
|
"'#{type.source}[#{name.value}]'"
|
@@ -33,7 +33,7 @@ module RuboCop
|
|
33
33
|
# include_recipe 'yum::repoforge'
|
34
34
|
# include_recipe 'yum::yum'
|
35
35
|
#
|
36
|
-
class LegacyYumCookbookRecipes <
|
36
|
+
class LegacyYumCookbookRecipes < Base
|
37
37
|
MSG = 'The elrepo, epel, ius, remi, and repoforge recipes were split into their own cookbooks and the yum recipe was renamed to be default with the release of yum cookbook 3.0 (Dec 2013).'
|
38
38
|
|
39
39
|
def_node_matcher :old_yum_recipe?, <<-PATTERN
|
@@ -42,7 +42,7 @@ module RuboCop
|
|
42
42
|
|
43
43
|
def on_send(node)
|
44
44
|
old_yum_recipe?(node) do
|
45
|
-
add_offense(node,
|
45
|
+
add_offense(node, message: MSG, severity: :warning)
|
46
46
|
end
|
47
47
|
end
|
48
48
|
end
|
@@ -29,14 +29,14 @@ module RuboCop
|
|
29
29
|
# lc_all 'en_gb.utf-8'
|
30
30
|
# end
|
31
31
|
#
|
32
|
-
class LocaleDeprecatedLcAllProperty <
|
32
|
+
class LocaleDeprecatedLcAllProperty < Base
|
33
33
|
include RuboCop::Chef::CookbookHelpers
|
34
34
|
|
35
35
|
MSG = "The local resource's lc_all property has been deprecated and will be removed in Chef Infra Client 17"
|
36
36
|
|
37
37
|
def on_block(node)
|
38
38
|
match_property_in_resource?(:locale, 'lc_all', node) do |property|
|
39
|
-
add_offense(property,
|
39
|
+
add_offense(property, message: MSG, severity: :warning)
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# Copyright:: Copyright 2020, Chef Software Inc.
|
4
|
+
# Author:: Tim Smith (<tsmith@chef.io>)
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
module RuboCop
|
20
|
+
module Cop
|
21
|
+
module Chef
|
22
|
+
module ChefDeprecations
|
23
|
+
# The `global` property in the macos_userdefaults resource was deprecated in Chef Infra Client 16.3. This property was never properly implemented and caused failures under many conditions. Omitting the `domain` property will now set global defaults.
|
24
|
+
#
|
25
|
+
# @example
|
26
|
+
#
|
27
|
+
# # bad
|
28
|
+
# macos_userdefaults 'set a value' do
|
29
|
+
# global true
|
30
|
+
# key 'key'
|
31
|
+
# value 'value'
|
32
|
+
# end
|
33
|
+
#
|
34
|
+
# # good
|
35
|
+
# macos_userdefaults 'set a value' do
|
36
|
+
# key 'key'
|
37
|
+
# value 'value'
|
38
|
+
# end
|
39
|
+
#
|
40
|
+
class MacosUserdefaultsGlobalProperty < Base
|
41
|
+
extend TargetChefVersion
|
42
|
+
include RangeHelp
|
43
|
+
include RuboCop::Chef::CookbookHelpers
|
44
|
+
extend AutoCorrector
|
45
|
+
|
46
|
+
minimum_target_chef_version '16.3'
|
47
|
+
|
48
|
+
MSG = 'The `global` property in the macos_userdefaults resource was deprecated in Chef Infra Client 16.3. Omitting the `domain` property will now set global defaults.'
|
49
|
+
|
50
|
+
def on_block(node)
|
51
|
+
match_property_in_resource?(:macos_userdefaults, 'global', node) do |global|
|
52
|
+
add_offense(global.loc.expression, message: MSG, severity: :warning) do |corrector|
|
53
|
+
corrector.remove(range_with_surrounding_space(range: global.loc.expression, side: :left))
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|