cookstyle 6.7.3 → 6.12.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +6 -0
- data/bin/cookstyle +1 -0
- data/bin/cookstyle-profile +31 -0
- data/config/cookstyle.yml +79 -4
- data/config/disable_all.yml +22 -0
- data/config/upstream.yml +132 -11
- data/cookstyle.gemspec +1 -0
- data/lib/cookstyle.rb +2 -0
- data/lib/cookstyle/version.rb +3 -2
- data/lib/rubocop/chef.rb +1 -0
- data/lib/rubocop/chef/autocorrect_helpers.rb +1 -0
- data/lib/rubocop/chef/cookbook_helpers.rb +1 -0
- data/lib/rubocop/chef/platform_helpers.rb +1 -0
- data/lib/rubocop/cop/chef/correctness/block_guard_clause_string_only.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/cb_depends_on_self.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/chef_application_fatal.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/conditional_ruby_shellout.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/dnf_package_allow_downgrades.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/incorrect_library_injection.rb +12 -1
- data/lib/rubocop/cop/chef/correctness/invalid_notification_timing.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/invalid_platform_family_helper.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/invalid_platform_family_values_in_case.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/invalid_platform_helper.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/invalid_platform_metadata.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/invalid_platform_values_in_case.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_family_helper.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_helper.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/invalid_version_metadata.rb +3 -2
- data/lib/rubocop/cop/chef/correctness/lazy_eval_node_attribute_defaults.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/malformed_value_for_platform.rb +1 -0
- data/lib/rubocop/cop/chef/correctness/metadata_missing_name.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/node_normal.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/node_normal_unless.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/node_save.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/notifies_action_not_symbol.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/openssl_password_helpers.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/powershell_delete_file.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/resource_sets_internal_properties.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/resource_sets_name_property.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/resource_with_none_action.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/scoped_file_exist.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/service_resource.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/tmp_path.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/ use_automatic_resource_name.rb +52 -0
- data/lib/rubocop/cop/chef/deprecation/chef_handler_recipe.rb +55 -0
- data/lib/rubocop/cop/chef/deprecation/chef_handler_supports.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/chef_rest.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/chef_rewind.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/chef_windows_platform_helper.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/chefdk_generators.rb +60 -0
- data/lib/rubocop/cop/chef/deprecation/cheffile.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/chefspec_coverage_report.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/chefspec_legacy_runner.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/chocolatey_package_uninstall_action.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/depends_compat_resource.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/depends_partial_search.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/depends_poise.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/deprecated_chefspec_platform.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/deprecated_mixins.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/deprecated_platform_methods.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/deprecated_shellout_methods.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/deprecated_windows_version_check.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_properties.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/easy_install.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/eol_audit_mode.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/epic_fail.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/erl_call.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/hwrp_without_provides.rb +142 -0
- data/lib/rubocop/cop/chef/deprecation/inherits_compat_resource.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/launchd_deprecated_hash_property.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/legacy_notify_syntax.rb +3 -2
- data/lib/rubocop/cop/chef/deprecation/legacy_yum_cookbook_recipes.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/locale_lc_all_property.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/log_resource_notifications.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/name_property_and_default.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/node_deep_fetch.rb +8 -21
- data/lib/rubocop/cop/chef/deprecation/node_methods_not_attributes.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/node_set.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/node_set_unless.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/node_set_without_level.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/partial_search_class_usage.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/partial_search_helper_usage.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/poise_archive.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/powershell_cookbook_helpers.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/require_recipe.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/resource_overrides_provides_method.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/resource_uses_dsl_name_method.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/resource_uses_only_resource_name.rb +23 -13
- data/lib/rubocop/cop/chef/deprecation/resource_uses_provider_base_method.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/resource_uses_updated_method.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/ruby_27_keyword_argument_warnings.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/ruby_block_create_action.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/run_command_helper.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/search_uses_positional_parameters.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/use_inline_resources.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/user_supports_property.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/verify_property_file_expansion.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/windows_feature_servermanagercmd.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/windows_task_change_action.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/windows_version_helpers.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/xml_ruby_recipe.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/yum_dnf_compat_recipe.rb +2 -1
- data/lib/rubocop/cop/chef/effortless/berksfile.rb +2 -1
- data/lib/rubocop/cop/chef/effortless/data_bags.rb +2 -1
- data/lib/rubocop/cop/chef/effortless/node_environment.rb +2 -1
- data/lib/rubocop/cop/chef/effortless/node_policygroup.rb +2 -1
- data/lib/rubocop/cop/chef/effortless/node_roles.rb +2 -1
- data/lib/rubocop/cop/chef/effortless/search_for_environments_or_roles.rb +2 -1
- data/lib/rubocop/cop/chef/effortless/search_used.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/allowed_actions_initializer.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/apt_default_recipe.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/berksfile_source.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/build_essential.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/chef_14_resources.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/chef_gem_nokogiri.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/compile_time_resources.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/conditional_using_test.rb +57 -0
- data/lib/rubocop/cop/chef/modernize/cron_manage_resource.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/databag_helpers.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/default_action_initializer.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/defines_chefspec_matchers.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/definitions.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/depends_zypper_cookbook.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/dsl_include_in_resource.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/empty_resource_initialize.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/execute_apt_update.rb +3 -2
- data/lib/rubocop/cop/chef/modernize/execute_sc_exe.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/execute_sleep.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/execute_sysctl.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/execute_tzutil.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/foodcritic_comments.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/if_provides_default_action.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/includes_mixin_shellout.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/libarchive_file.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/macos_user_defaults.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/minitest_handler_usage.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/node_init_package.rb +18 -9
- data/lib/rubocop/cop/chef/modernize/node_roles_include.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/ohai_default_recipe.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/openssl_rsa_key_resource.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/openssl_x509_resource.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/osx_config_profile_resource.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/powershell_expand_archive.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/powershell_guard_interpreter.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/powershell_install_package.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/powershell_install_windowsfeature.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/property_with_name_attribute.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/provides_initializer.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/resource_name_initializer.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/resource_set_or_return.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/resource_with_attributes.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/respond_to_compile_time.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/respond_to_metadata.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/respond_to_provides.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/respond_to_resource_name.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/sc_windows_resource.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/seven_zip_archive.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/shell_out_helper.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/shellouts_to_chocolatey.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/simplify_apt_ppa_setup.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/systctl_param_resource.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/unnecessary_mixlib_shellout_require.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/use_multipackage_installs.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/use_require_relative.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/whyrun_supported_true.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/windows_default_recipe.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/windows_registry_uac.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/windows_zipfile.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/zipfile_resource.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/zypper_repo.rb +2 -1
- data/lib/rubocop/cop/chef/redundant/apt_repository_distribution_default.rb +2 -1
- data/lib/rubocop/cop/chef/redundant/apt_repository_notifies_apt_update.rb +2 -1
- data/lib/rubocop/cop/chef/redundant/attribute_metadata.rb +2 -1
- data/lib/rubocop/cop/chef/redundant/conflicts_metadata.rb +2 -1
- data/lib/rubocop/cop/chef/redundant/custom_resource_with_allowed_actions.rb +2 -1
- data/lib/rubocop/cop/chef/redundant/grouping_metadata.rb +2 -1
- data/lib/rubocop/cop/chef/redundant/long_description_metadata.rb +2 -1
- data/lib/rubocop/cop/chef/redundant/multiple_platform_checks.rb +61 -0
- data/lib/rubocop/cop/chef/redundant/name_property_and_required.rb +2 -1
- data/lib/rubocop/cop/chef/redundant/ohai_attribute_to_string.rb +69 -0
- data/lib/rubocop/cop/chef/redundant/property_splat_regex.rb +2 -1
- data/lib/rubocop/cop/chef/redundant/property_with_default_and_required.rb +2 -1
- data/lib/rubocop/cop/chef/redundant/provides_metadata.rb +2 -1
- data/lib/rubocop/cop/chef/redundant/recipe_metadata.rb +2 -1
- data/lib/rubocop/cop/chef/redundant/replaces_metadata.rb +2 -1
- data/lib/rubocop/cop/chef/redundant/resource_with_nothing_action.rb +2 -1
- data/lib/rubocop/cop/chef/redundant/sensitive_property_in_resource.rb +2 -1
- data/lib/rubocop/cop/chef/redundant/string_property_with_nil_default.rb +2 -1
- data/lib/rubocop/cop/chef/redundant/suggests_metadata.rb +2 -1
- data/lib/rubocop/cop/chef/redundant/unnecessary_desired_state.rb +2 -1
- data/lib/rubocop/cop/chef/redundant/unnecessary_name_property.rb +2 -1
- data/lib/rubocop/cop/chef/redundant/use_create_if_missing.rb +2 -1
- data/lib/rubocop/cop/chef/sharing/default_maintainer_metadata.rb +2 -1
- data/lib/rubocop/cop/chef/sharing/empty_metadata_field.rb +2 -1
- data/lib/rubocop/cop/chef/sharing/include_property_descriptions.rb +2 -1
- data/lib/rubocop/cop/chef/sharing/include_resource_descriptions.rb +2 -1
- data/lib/rubocop/cop/chef/sharing/include_resource_examples.rb +60 -0
- data/lib/rubocop/cop/chef/sharing/insecure_cookbook_url.rb +2 -1
- data/lib/rubocop/cop/chef/sharing/invalid_license_string.rb +3 -2
- data/lib/rubocop/cop/chef/style/attribute_keys.rb +2 -1
- data/lib/rubocop/cop/chef/style/chef_whaaat.rb +2 -1
- data/lib/rubocop/cop/chef/style/comment_sentence_spacing.rb +2 -1
- data/lib/rubocop/cop/chef/style/comments_copyright_format.rb +2 -1
- data/lib/rubocop/cop/chef/style/comments_default_copyright.rb +2 -1
- data/lib/rubocop/cop/chef/style/comments_format.rb +2 -1
- data/lib/rubocop/cop/chef/style/file_mode.rb +2 -1
- data/lib/rubocop/cop/chef/style/immediate_notification_timing.rb +2 -1
- data/lib/rubocop/cop/chef/style/include_recipe_with_parentheses.rb +58 -0
- data/lib/rubocop/cop/chef/style/negating_only_if.rb +2 -1
- data/lib/rubocop/cop/chef/style/overly_complex_supports_depends_metadata.rb +2 -1
- data/lib/rubocop/cop/chef/style/simplify_platform_major_version_check.rb +2 -1
- data/lib/rubocop/cop/chef/style/true_false_resource_properties.rb +2 -1
- data/lib/rubocop/cop/chef/style/unnecessary_os_check.rb +3 -3
- data/lib/rubocop/cop/chef/style/unnecessary_platform_case_statement.rb +2 -1
- data/lib/rubocop/cop/chef/style/use_platform_helpers.rb +3 -3
- data/lib/rubocop/monkey_patches/comment_config.rb +1 -0
- data/lib/rubocop/monkey_patches/cop.rb +1 -0
- data/lib/rubocop/monkey_patches/registry_cop.rb +15 -0
- metadata +15 -5
- data/lib/rubocop/cop/chef/deprecation/resource_without_name_or_provides.rb +0 -81
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
#
|
2
3
|
# Copyright:: 2019, Chef Software Inc.
|
3
4
|
# Author:: Tim Smith (<tsmith@chef.io>)
|
@@ -36,7 +37,7 @@ module RuboCop
|
|
36
37
|
class ResourceWithNoneAction < Cop
|
37
38
|
include RuboCop::Chef::CookbookHelpers
|
38
39
|
|
39
|
-
MSG = 'Resource uses the nonexistent :none action instead of the :nothing action'
|
40
|
+
MSG = 'Resource uses the nonexistent :none action instead of the :nothing action'
|
40
41
|
|
41
42
|
def on_block(node)
|
42
43
|
match_property_in_resource?(nil, 'action', node) do |action_node|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
#
|
2
3
|
# Copyright:: Copyright 2019, Chef Software Inc.
|
3
4
|
# Author:: Tim Smith (<tsmith@chef.io>)
|
@@ -29,7 +30,7 @@ module RuboCop
|
|
29
30
|
# not_if { ::File.exist?('/etc/foo/bar') }
|
30
31
|
#
|
31
32
|
class ScopedFileExist < Cop
|
32
|
-
MSG = 'Scope file exist to access the correct File class by using ::File.exist? not File.exist?.'
|
33
|
+
MSG = 'Scope file exist to access the correct File class by using ::File.exist? not File.exist?.'
|
33
34
|
|
34
35
|
def_node_matcher :unscoped_file_exist?, <<-PATTERN
|
35
36
|
(block (send nil? {:not_if :only_if}) (args) (send $(const nil? :File) {:exist? :exists?} (...)))
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
#
|
2
3
|
# Copyright:: 2016, Chris Henry
|
3
4
|
#
|
@@ -27,7 +28,7 @@ module RuboCop
|
|
27
28
|
# command "/sbin/service/memcached start"
|
28
29
|
#
|
29
30
|
class ServiceResource < Cop
|
30
|
-
MSG = 'Use a service resource to start and stop services'
|
31
|
+
MSG = 'Use a service resource to start and stop services'
|
31
32
|
|
32
33
|
def_node_matcher :execute_command?, <<-PATTERN
|
33
34
|
(send nil? :command $str)
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
#
|
2
3
|
# Copyright:: 2016, Chris Henry
|
3
4
|
#
|
@@ -30,7 +31,7 @@ module RuboCop
|
|
30
31
|
#
|
31
32
|
#
|
32
33
|
class TmpPath < Cop
|
33
|
-
MSG = 'Use file_cache_path rather than hard-coding tmp paths'
|
34
|
+
MSG = 'Use file_cache_path rather than hard-coding tmp paths'
|
34
35
|
|
35
36
|
def_node_matcher :remote_file?, <<-PATTERN
|
36
37
|
(send nil? :remote_file $str)
|
@@ -0,0 +1,52 @@
|
|
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
|
+
module RuboCop
|
19
|
+
module Cop
|
20
|
+
module Chef
|
21
|
+
module ChefDeprecations
|
22
|
+
# The use_automatic_resource_name method was removed in Chef Infra Client 16. The resource name/provides should be set explicitly instead.
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
#
|
26
|
+
# # bad
|
27
|
+
# module MyCookbook
|
28
|
+
# class MyCookbookService < Chef::Resource
|
29
|
+
# use_automatic_resource_name
|
30
|
+
# provides :mycookbook_service
|
31
|
+
# ...
|
32
|
+
# end
|
33
|
+
# end
|
34
|
+
#
|
35
|
+
class UseAutomaticResourceName < Base
|
36
|
+
extend RuboCop::Cop::AutoCorrector
|
37
|
+
include RangeHelp
|
38
|
+
|
39
|
+
MSG = 'The use_automatic_resource_name method was removed in Chef Infra Client 16. The resource name/provides should be set explicitly instead.'
|
40
|
+
|
41
|
+
def on_send(node)
|
42
|
+
return unless node.method_name == :use_automatic_resource_name
|
43
|
+
|
44
|
+
add_offense(node.loc.selector, message: MSG, severity: :warning) do |corrector|
|
45
|
+
corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# 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
|
+
# There is no need to include the empty and deprecated chef_handler::default recipe in order to use the chef_handler resource
|
24
|
+
#
|
25
|
+
# @example
|
26
|
+
#
|
27
|
+
# # bad
|
28
|
+
# include_recipe 'chef_handler'
|
29
|
+
# include_recipe 'chef_handler::default'
|
30
|
+
#
|
31
|
+
class ChefHandlerRecipe < Cop
|
32
|
+
include RangeHelp
|
33
|
+
|
34
|
+
MSG = 'There is no need to include the empty and deprecated chef_handler::default recipe in order to use the chef_handler resource'
|
35
|
+
|
36
|
+
def_node_matcher :chef_handler_recipe?, <<-PATTERN
|
37
|
+
(send nil? :include_recipe (str {"chef_handler" "chef_handler::default"}))
|
38
|
+
PATTERN
|
39
|
+
|
40
|
+
def on_send(node)
|
41
|
+
chef_handler_recipe?(node) do
|
42
|
+
add_offense(node, location: :expression, message: MSG, severity: :refactor)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def autocorrect(node)
|
47
|
+
lambda do |corrector|
|
48
|
+
corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
#
|
2
3
|
# Copyright:: 2019-2020, Chef Software, Inc.
|
3
4
|
# Author:: Tim Smith (<tsmith@chef.io>)
|
@@ -36,7 +37,7 @@ module RuboCop
|
|
36
37
|
class ChefHandlerUsesSupports < Cop
|
37
38
|
include RuboCop::Chef::CookbookHelpers
|
38
39
|
|
39
|
-
MSG = 'Use the type property instead of the deprecated supports property in the chef_handler resource. The supports property was removed in chef_handler cookbook version 3.0 (June 2017) and Chef Infra Client 14.0.'
|
40
|
+
MSG = 'Use the type property instead of the deprecated supports property in the chef_handler resource. The supports property was removed in chef_handler cookbook version 3.0 (June 2017) and Chef Infra Client 14.0.'
|
40
41
|
|
41
42
|
def on_block(node)
|
42
43
|
match_property_in_resource?(:chef_handler, 'supports', node) do |prop_node|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
#
|
2
3
|
# Copyright:: 2019, Chef Software Inc.
|
3
4
|
# Author:: Tim Smith (<tsmith@chef.io>)
|
@@ -28,7 +29,7 @@ module RuboCop
|
|
28
29
|
# Chef::REST::RESTRequest.new(:GET, FOO, nil).call
|
29
30
|
#
|
30
31
|
class UsesChefRESTHelpers < Cop
|
31
|
-
MSG = "Don't use the helpers in Chef::REST which were removed in Chef Infra Client 13"
|
32
|
+
MSG = "Don't use the helpers in Chef::REST which were removed in Chef Infra Client 13"
|
32
33
|
|
33
34
|
def_node_matcher :require_rest?, <<-PATTERN
|
34
35
|
(send nil? :require ( str "chef/rest"))
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
#
|
2
3
|
# Copyright:: 2019, Chef Software Inc.
|
3
4
|
# Author:: Tim Smith (<tsmith@chef.io>)
|
@@ -46,7 +47,7 @@ module RuboCop
|
|
46
47
|
unwind: 'delete_resource',
|
47
48
|
}.freeze
|
48
49
|
|
49
|
-
MSG = 'Use delete_resource / edit_resource introduced in Chef Infra Client 12.10 instead of functionality in the deprecated chef-rewind gem'
|
50
|
+
MSG = 'Use delete_resource / edit_resource introduced in Chef Infra Client 12.10 instead of functionality in the deprecated chef-rewind gem'
|
50
51
|
|
51
52
|
def_node_matcher :rewind_gem_install?, <<-PATTERN
|
52
53
|
(send nil? :chef_gem (str "chef-rewind"))
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
#
|
2
3
|
# Copyright:: 2020, Chef Software, Inc.
|
3
4
|
# Author:: Tim Smith (<tsmith@chef.io>)
|
@@ -30,7 +31,7 @@ module RuboCop
|
|
30
31
|
# platform_family?('windows')
|
31
32
|
#
|
32
33
|
class ChefWindowsPlatformHelper < Cop
|
33
|
-
MSG = "Use `platform?('windows')` instead of the legacy `Chef::Platform.windows?` helper."
|
34
|
+
MSG = "Use `platform?('windows')` instead of the legacy `Chef::Platform.windows?` helper."
|
34
35
|
|
35
36
|
def_node_matcher :chef_platform_windows?, <<-PATTERN
|
36
37
|
(send
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# 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
|
+
# Chef Workstation 0.8 and later renamed the ChefDK module used when writing custom cookbook generators from ChefDK to ChefCLI. For compatibility with the latest Chef Workstation releases you'll need to reference the new class names.
|
24
|
+
#
|
25
|
+
# @example
|
26
|
+
#
|
27
|
+
# # bad
|
28
|
+
# ChefDK::CLI
|
29
|
+
# ChefDK::Generator::TemplateHelper
|
30
|
+
# module ChefDK
|
31
|
+
# ...
|
32
|
+
# end
|
33
|
+
#
|
34
|
+
# # good
|
35
|
+
# ChefCLI::CLI
|
36
|
+
# ChefCLI::Generator::TemplateHelper
|
37
|
+
# module ChefCLI
|
38
|
+
# ...
|
39
|
+
# end
|
40
|
+
#
|
41
|
+
class ChefDKGenerators < Cop
|
42
|
+
MSG = 'When writing cookbook generators use the ChefCLI module instead of the ChefDK module which was removed in Chef Workstation 0.8 and later.'
|
43
|
+
|
44
|
+
def on_const(node)
|
45
|
+
# We want to catch calls like ChefCLI::CLI.whatever or places where classes are defined in the ChefDK module
|
46
|
+
return unless node.const_name == 'ChefDK' && (node.parent&.module_type? || node.parent&.const_type?)
|
47
|
+
|
48
|
+
add_offense(node, location: :expression, message: MSG, severity: :warning)
|
49
|
+
end
|
50
|
+
|
51
|
+
def autocorrect(node)
|
52
|
+
lambda do |corrector|
|
53
|
+
corrector.replace(node.loc.expression, node.source.gsub('ChefDK', 'ChefCLI'))
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
#
|
2
3
|
# Copyright:: 2019, Chef Software Inc.
|
3
4
|
# Author:: Tim Smith (<tsmith@chef.io>)
|
@@ -24,7 +25,7 @@ module RuboCop
|
|
24
25
|
class Cheffile < Cop
|
25
26
|
include RangeHelp
|
26
27
|
|
27
|
-
MSG = 'The Libarian-Chef depsolving project is no longer maintained and a Cheffile should not be used for cookbook depsolving. Consider using Policyfiles instead.'
|
28
|
+
MSG = 'The Libarian-Chef depsolving project is no longer maintained and a Cheffile should not be used for cookbook depsolving. Consider using Policyfiles instead.'
|
28
29
|
|
29
30
|
def investigate(processed_source)
|
30
31
|
return if processed_source.blank?
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
#
|
2
3
|
# Copyright:: 2019, Chef Software Inc.
|
3
4
|
# Author:: Tim Smith (<tsmith@chef.io>)
|
@@ -28,7 +29,7 @@ module RuboCop
|
|
28
29
|
# at_exit { ChefSpec::Coverage.report! }
|
29
30
|
#
|
30
31
|
class ChefSpecCoverageReport < Cop
|
31
|
-
MSG = "Don't use the deprecated ChefSpec coverage report functionality in your specs."
|
32
|
+
MSG = "Don't use the deprecated ChefSpec coverage report functionality in your specs."
|
32
33
|
|
33
34
|
def_node_matcher :coverage_reporter?, <<-PATTERN
|
34
35
|
(block (send nil? :at_exit ) (args) (send (const (const nil? :ChefSpec) :Coverage) :report!))
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
#
|
2
3
|
# Copyright:: 2019, Chef Software Inc.
|
3
4
|
# Author:: Tim Smith (<tsmith@chef.io>)
|
@@ -40,7 +41,7 @@ module RuboCop
|
|
40
41
|
# end
|
41
42
|
#
|
42
43
|
class ChefSpecLegacyRunner < Cop
|
43
|
-
MSG = 'Use ChefSpec::SoloRunner or ChefSpec::ServerRunner instead of the deprecated ChefSpec::Runner.'
|
44
|
+
MSG = 'Use ChefSpec::SoloRunner or ChefSpec::ServerRunner instead of the deprecated ChefSpec::Runner.'
|
44
45
|
|
45
46
|
def_node_matcher :chefspec_runner?, <<-PATTERN
|
46
47
|
(const (const nil? :ChefSpec) :Runner)
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
#
|
2
3
|
# Copyright:: 2019, Chef Software Inc.
|
3
4
|
# Author:: Tim Smith (<tsmith@chef.io>)
|
@@ -36,7 +37,7 @@ module RuboCop
|
|
36
37
|
class ChocolateyPackageUninstallAction < Cop
|
37
38
|
include RuboCop::Chef::CookbookHelpers
|
38
39
|
|
39
|
-
MSG = 'Use the :remove action in the chocolatey_package resource instead of :uninstall which was removed in Chef Infra Client 14+'
|
40
|
+
MSG = 'Use the :remove action in the chocolatey_package resource instead of :uninstall which was removed in Chef Infra Client 14+'
|
40
41
|
|
41
42
|
def on_block(node)
|
42
43
|
match_property_in_resource?(:chocolatey_package, 'action', node) do |choco_action|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
#
|
2
3
|
# Copyright:: 2019, Chef Software, Inc.
|
3
4
|
# Author:: Tim Smith (<tsmith@chef.io>)
|
@@ -31,7 +32,7 @@ module RuboCop
|
|
31
32
|
|
32
33
|
minimum_target_chef_version '12.19'
|
33
34
|
|
34
|
-
MSG = "Don't depend on the deprecated compat_resource cookbook made obsolete by Chef 12.19+"
|
35
|
+
MSG = "Don't depend on the deprecated compat_resource cookbook made obsolete by Chef 12.19+"
|
35
36
|
|
36
37
|
def_node_matcher :depends_compat_resource?, <<-PATTERN
|
37
38
|
(send nil? :depends (str {"compat_resource"}))
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
#
|
2
3
|
# Copyright:: 2019, Chef Software, Inc.
|
3
4
|
# Author:: Tim Smith (<tsmith@chef.io>)
|
@@ -30,7 +31,7 @@ module RuboCop
|
|
30
31
|
|
31
32
|
minimum_target_chef_version '13.0'
|
32
33
|
|
33
|
-
MSG = "Don't depend on the deprecated partial_search cookbook made obsolete by Chef 13"
|
34
|
+
MSG = "Don't depend on the deprecated partial_search cookbook made obsolete by Chef 13"
|
34
35
|
|
35
36
|
def_node_matcher :depends_partial_search?, <<-PATTERN
|
36
37
|
(send nil? :depends (str "partial_search"))
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
#
|
2
3
|
# Copyright:: 2019, Chef Software, Inc.
|
3
4
|
# Author:: Tim Smith (<tsmith@chef.io>)
|
@@ -27,7 +28,7 @@ module RuboCop
|
|
27
28
|
# depends 'poise-service'
|
28
29
|
#
|
29
30
|
class CookbookDependsOnPoise < Cop
|
30
|
-
MSG = 'Cookbooks should not depend on the deprecated Poise framework'
|
31
|
+
MSG = 'Cookbooks should not depend on the deprecated Poise framework'
|
31
32
|
|
32
33
|
def_node_matcher :depends_method?, <<-PATTERN
|
33
34
|
(send nil? :depends $str)
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
#
|
2
3
|
# Copyright:: 2020, Chef Software Inc.
|
3
4
|
# Author:: Tim Smith (<tsmith@chef.io>)
|
@@ -28,7 +29,7 @@ module RuboCop
|
|
28
29
|
class DeprecatedChefSpecPlatform < Cop
|
29
30
|
include RuboCop::Chef::CookbookHelpers
|
30
31
|
|
31
|
-
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"
|
32
|
+
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"
|
32
33
|
|
33
34
|
Gem::Dependency.new('', ['~> 1.4.5', '>= 1.4.6']).match?('', '1.4.6')
|
34
35
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
#
|
2
3
|
# Copyright:: 2019, Chef Software Inc.
|
3
4
|
# Author:: Tim Smith (<tsmith@chef.io>)
|
@@ -36,7 +37,7 @@ module RuboCop
|
|
36
37
|
class UsesDeprecatedMixins < Cop
|
37
38
|
include RangeHelp
|
38
39
|
|
39
|
-
MSG = "Don't use deprecated Mixins no longer included in Chef Infra Client 14 and later."
|
40
|
+
MSG = "Don't use deprecated Mixins no longer included in Chef Infra Client 14 and later."
|
40
41
|
|
41
42
|
def_node_matcher :deprecated_mixin?, <<-PATTERN
|
42
43
|
(send nil? :include (const (const (const nil? :Chef) :Mixin) { :Language :LanguageIncludeAttribute :RecipeDefinitionDSLCore :LanguageIncludeRecipe }))
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
#
|
2
3
|
# Copyright:: 2019, Chef Software Inc.
|
3
4
|
# Author:: Tim Smith (<tsmith@chef.io>)
|
@@ -38,7 +39,7 @@ module RuboCop
|
|
38
39
|
# provider = resource.provider_for_action(:create)
|
39
40
|
#
|
40
41
|
class DeprecatedPlatformMethods < Cop
|
41
|
-
MSG = 'Use provider_for_action instead of the deprecated Chef::Platform methods in resources, which were removed in Chef Infra Client 13.'
|
42
|
+
MSG = 'Use provider_for_action instead of the deprecated Chef::Platform methods in resources, which were removed in Chef Infra Client 13.'
|
42
43
|
|
43
44
|
def_node_matcher :platform_method?, <<-PATTERN
|
44
45
|
(send (const (const nil? :Chef) :Platform) {:provider_for_resource :find_provider :find_provider_for_node} ... )
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
#
|
2
3
|
# Copyright:: 2020, Chef Software Inc.
|
3
4
|
# Author:: Tim Smith (<tsmith@chef.io>)
|
@@ -53,7 +54,7 @@ module RuboCop
|
|
53
54
|
shell_out_with_systems_locale!
|
54
55
|
).freeze
|
55
56
|
|
56
|
-
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.'
|
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.'
|
57
58
|
|
58
59
|
def on_send(node)
|
59
60
|
add_offense(node, location: :expression, message: MSG, severity: :warning) if DEPRECATED_SHELLOUT_METHODS.include?(node.method_name)
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
#
|
2
3
|
# Copyright:: 2020, Chef Software, Inc.
|
3
4
|
# Author:: Tim Smith (<tsmith@chef.io>)
|
@@ -28,7 +29,7 @@ module RuboCop
|
|
28
29
|
# end
|
29
30
|
#
|
30
31
|
class DeprecatedWindowsVersionCheck < Cop
|
31
|
-
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."
|
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."
|
32
33
|
|
33
34
|
def on_send(node)
|
34
35
|
add_offense(node, location: :expression, message: MSG, severity: :warning) if node.method_name == :older_than_win_2012_or_8?
|