cookstyle 6.8.0 → 6.13.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (225) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +6 -0
  3. data/bin/cookstyle +1 -0
  4. data/bin/cookstyle-profile +31 -0
  5. data/config/cookstyle.yml +123 -2
  6. data/config/disable_all.yml +22 -0
  7. data/config/upstream.yml +132 -11
  8. data/cookstyle.gemspec +1 -0
  9. data/lib/cookstyle.rb +2 -0
  10. data/lib/cookstyle/version.rb +3 -2
  11. data/lib/rubocop/chef.rb +1 -0
  12. data/lib/rubocop/chef/autocorrect_helpers.rb +1 -0
  13. data/lib/rubocop/chef/cookbook_helpers.rb +1 -0
  14. data/lib/rubocop/chef/platform_helpers.rb +1 -0
  15. data/lib/rubocop/cop/chef/correctness/block_guard_clause_string_only.rb +2 -1
  16. data/lib/rubocop/cop/chef/correctness/cb_depends_on_self.rb +2 -1
  17. data/lib/rubocop/cop/chef/correctness/chef_application_fatal.rb +2 -1
  18. data/lib/rubocop/cop/chef/correctness/conditional_ruby_shellout.rb +2 -1
  19. data/lib/rubocop/cop/chef/correctness/dnf_package_allow_downgrades.rb +2 -1
  20. data/lib/rubocop/cop/chef/correctness/incorrect_library_injection.rb +12 -1
  21. data/lib/rubocop/cop/chef/correctness/invalid_default_action.rb +48 -0
  22. data/lib/rubocop/cop/chef/correctness/invalid_notification_timing.rb +2 -1
  23. data/lib/rubocop/cop/chef/correctness/invalid_platform_family_helper.rb +2 -1
  24. data/lib/rubocop/cop/chef/correctness/invalid_platform_family_values_in_case.rb +2 -1
  25. data/lib/rubocop/cop/chef/correctness/invalid_platform_helper.rb +2 -1
  26. data/lib/rubocop/cop/chef/correctness/invalid_platform_metadata.rb +2 -1
  27. data/lib/rubocop/cop/chef/correctness/invalid_platform_values_in_case.rb +2 -1
  28. data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_family_helper.rb +2 -1
  29. data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_helper.rb +2 -1
  30. data/lib/rubocop/cop/chef/correctness/invalid_version_metadata.rb +3 -2
  31. data/lib/rubocop/cop/chef/correctness/lazy_eval_node_attribute_defaults.rb +2 -1
  32. data/lib/rubocop/cop/chef/correctness/malformed_value_for_platform.rb +1 -0
  33. data/lib/rubocop/cop/chef/correctness/metadata_missing_name.rb +2 -1
  34. data/lib/rubocop/cop/chef/correctness/node_normal.rb +2 -1
  35. data/lib/rubocop/cop/chef/correctness/node_normal_unless.rb +2 -1
  36. data/lib/rubocop/cop/chef/correctness/node_save.rb +2 -1
  37. data/lib/rubocop/cop/chef/correctness/notifies_action_not_symbol.rb +2 -1
  38. data/lib/rubocop/cop/chef/correctness/openssl_password_helpers.rb +2 -1
  39. data/lib/rubocop/cop/chef/correctness/powershell_delete_file.rb +2 -1
  40. data/lib/rubocop/cop/chef/correctness/resource_sets_internal_properties.rb +2 -1
  41. data/lib/rubocop/cop/chef/correctness/resource_sets_name_property.rb +2 -1
  42. data/lib/rubocop/cop/chef/correctness/resource_with_none_action.rb +2 -1
  43. data/lib/rubocop/cop/chef/correctness/scoped_file_exist.rb +2 -1
  44. data/lib/rubocop/cop/chef/correctness/service_resource.rb +2 -1
  45. data/lib/rubocop/cop/chef/correctness/supports_must_be_float.rb +52 -0
  46. data/lib/rubocop/cop/chef/correctness/tmp_path.rb +2 -1
  47. data/lib/rubocop/cop/chef/deprecation/ use_automatic_resource_name.rb +52 -0
  48. data/lib/rubocop/cop/chef/deprecation/chef_handler_recipe.rb +55 -0
  49. data/lib/rubocop/cop/chef/deprecation/chef_handler_supports.rb +2 -1
  50. data/lib/rubocop/cop/chef/deprecation/chef_rest.rb +2 -1
  51. data/lib/rubocop/cop/chef/deprecation/chef_rewind.rb +2 -1
  52. data/lib/rubocop/cop/chef/deprecation/chef_windows_platform_helper.rb +2 -1
  53. data/lib/rubocop/cop/chef/deprecation/chefdk_generators.rb +60 -0
  54. data/lib/rubocop/cop/chef/deprecation/cheffile.rb +2 -1
  55. data/lib/rubocop/cop/chef/deprecation/chefspec_coverage_report.rb +2 -1
  56. data/lib/rubocop/cop/chef/deprecation/chefspec_legacy_runner.rb +2 -1
  57. data/lib/rubocop/cop/chef/deprecation/chocolatey_package_uninstall_action.rb +2 -1
  58. data/lib/rubocop/cop/chef/deprecation/depends_compat_resource.rb +2 -1
  59. data/lib/rubocop/cop/chef/deprecation/depends_partial_search.rb +2 -1
  60. data/lib/rubocop/cop/chef/deprecation/depends_poise.rb +2 -1
  61. data/lib/rubocop/cop/chef/deprecation/deprecated_chefspec_platform.rb +2 -1
  62. data/lib/rubocop/cop/chef/deprecation/deprecated_mixins.rb +2 -1
  63. data/lib/rubocop/cop/chef/deprecation/deprecated_platform_methods.rb +2 -1
  64. data/lib/rubocop/cop/chef/deprecation/deprecated_shellout_methods.rb +2 -1
  65. data/lib/rubocop/cop/chef/deprecation/deprecated_windows_version_check.rb +2 -1
  66. data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_properties.rb +2 -1
  67. data/lib/rubocop/cop/chef/deprecation/easy_install.rb +2 -1
  68. data/lib/rubocop/cop/chef/deprecation/eol_audit_mode.rb +2 -1
  69. data/lib/rubocop/cop/chef/deprecation/epic_fail.rb +2 -1
  70. data/lib/rubocop/cop/chef/deprecation/erl_call.rb +2 -1
  71. data/lib/rubocop/cop/chef/deprecation/hwrp_without_provides.rb +2 -1
  72. data/lib/rubocop/cop/chef/deprecation/inherits_compat_resource.rb +2 -1
  73. data/lib/rubocop/cop/chef/deprecation/launchd_deprecated_hash_property.rb +2 -1
  74. data/lib/rubocop/cop/chef/deprecation/legacy_notify_syntax.rb +3 -2
  75. data/lib/rubocop/cop/chef/deprecation/legacy_yum_cookbook_recipes.rb +2 -1
  76. data/lib/rubocop/cop/chef/deprecation/locale_lc_all_property.rb +2 -1
  77. data/lib/rubocop/cop/chef/deprecation/log_resource_notifications.rb +2 -1
  78. data/lib/rubocop/cop/chef/deprecation/name_property_and_default.rb +2 -1
  79. data/lib/rubocop/cop/chef/deprecation/node_deep_fetch.rb +8 -21
  80. data/lib/rubocop/cop/chef/deprecation/node_methods_not_attributes.rb +2 -1
  81. data/lib/rubocop/cop/chef/deprecation/node_set.rb +2 -1
  82. data/lib/rubocop/cop/chef/deprecation/node_set_unless.rb +2 -1
  83. data/lib/rubocop/cop/chef/deprecation/node_set_without_level.rb +2 -1
  84. data/lib/rubocop/cop/chef/deprecation/partial_search_class_usage.rb +2 -1
  85. data/lib/rubocop/cop/chef/deprecation/partial_search_helper_usage.rb +2 -1
  86. data/lib/rubocop/cop/chef/deprecation/poise_archive.rb +2 -1
  87. data/lib/rubocop/cop/chef/deprecation/powershell_cookbook_helpers.rb +2 -1
  88. data/lib/rubocop/cop/chef/deprecation/require_recipe.rb +2 -1
  89. data/lib/rubocop/cop/chef/deprecation/resource_overrides_provides_method.rb +2 -1
  90. data/lib/rubocop/cop/chef/deprecation/resource_uses_dsl_name_method.rb +2 -1
  91. data/lib/rubocop/cop/chef/deprecation/resource_uses_only_resource_name.rb +2 -1
  92. data/lib/rubocop/cop/chef/deprecation/resource_uses_provider_base_method.rb +2 -1
  93. data/lib/rubocop/cop/chef/deprecation/resource_uses_updated_method.rb +2 -1
  94. data/lib/rubocop/cop/chef/deprecation/ruby_27_keyword_argument_warnings.rb +3 -2
  95. data/lib/rubocop/cop/chef/deprecation/ruby_block_create_action.rb +2 -1
  96. data/lib/rubocop/cop/chef/deprecation/run_command_helper.rb +2 -1
  97. data/lib/rubocop/cop/chef/deprecation/search_uses_positional_parameters.rb +2 -1
  98. data/lib/rubocop/cop/chef/deprecation/use_inline_resources.rb +2 -1
  99. data/lib/rubocop/cop/chef/deprecation/user_supports_property.rb +2 -1
  100. data/lib/rubocop/cop/chef/deprecation/verify_property_file_expansion.rb +2 -1
  101. data/lib/rubocop/cop/chef/deprecation/windows_feature_servermanagercmd.rb +2 -1
  102. data/lib/rubocop/cop/chef/deprecation/windows_task_change_action.rb +2 -1
  103. data/lib/rubocop/cop/chef/deprecation/windows_version_helpers.rb +2 -1
  104. data/lib/rubocop/cop/chef/deprecation/xml_ruby_recipe.rb +2 -1
  105. data/lib/rubocop/cop/chef/deprecation/yum_dnf_compat_recipe.rb +2 -1
  106. data/lib/rubocop/cop/chef/effortless/berksfile.rb +2 -1
  107. data/lib/rubocop/cop/chef/effortless/data_bags.rb +2 -1
  108. data/lib/rubocop/cop/chef/effortless/node_environment.rb +2 -1
  109. data/lib/rubocop/cop/chef/effortless/node_policygroup.rb +2 -1
  110. data/lib/rubocop/cop/chef/effortless/node_roles.rb +2 -1
  111. data/lib/rubocop/cop/chef/effortless/search_for_environments_or_roles.rb +2 -1
  112. data/lib/rubocop/cop/chef/effortless/search_used.rb +2 -1
  113. data/lib/rubocop/cop/chef/modernize/action_method_in_resource.rb +57 -0
  114. data/lib/rubocop/cop/chef/modernize/allowed_actions_initializer.rb +2 -1
  115. data/lib/rubocop/cop/chef/modernize/apt_default_recipe.rb +2 -1
  116. data/lib/rubocop/cop/chef/modernize/berksfile_source.rb +2 -1
  117. data/lib/rubocop/cop/chef/modernize/build_essential.rb +2 -1
  118. data/lib/rubocop/cop/chef/modernize/chef_14_resources.rb +2 -1
  119. data/lib/rubocop/cop/chef/modernize/chef_gem_nokogiri.rb +2 -1
  120. data/lib/rubocop/cop/chef/modernize/compile_time_resources.rb +2 -1
  121. data/lib/rubocop/cop/chef/modernize/conditional_using_test.rb +57 -0
  122. data/lib/rubocop/cop/chef/modernize/cron_d_file_or_template.rb +88 -0
  123. data/lib/rubocop/cop/chef/modernize/cron_manage_resource.rb +2 -1
  124. data/lib/rubocop/cop/chef/modernize/databag_helpers.rb +2 -1
  125. data/lib/rubocop/cop/chef/modernize/default_action_initializer.rb +2 -1
  126. data/lib/rubocop/cop/chef/modernize/defines_chefspec_matchers.rb +2 -1
  127. data/lib/rubocop/cop/chef/modernize/definitions.rb +2 -1
  128. data/lib/rubocop/cop/chef/modernize/depends_zypper_cookbook.rb +2 -1
  129. data/lib/rubocop/cop/chef/modernize/dsl_include_in_resource.rb +2 -1
  130. data/lib/rubocop/cop/chef/modernize/empty_resource_initialize.rb +2 -1
  131. data/lib/rubocop/cop/chef/modernize/execute_apt_update.rb +3 -2
  132. data/lib/rubocop/cop/chef/modernize/execute_sc_exe.rb +2 -1
  133. data/lib/rubocop/cop/chef/modernize/execute_sleep.rb +2 -1
  134. data/lib/rubocop/cop/chef/modernize/execute_sysctl.rb +2 -1
  135. data/lib/rubocop/cop/chef/modernize/execute_tzutil.rb +2 -1
  136. data/lib/rubocop/cop/chef/modernize/foodcritic_comments.rb +2 -1
  137. data/lib/rubocop/cop/chef/modernize/if_provides_default_action.rb +2 -1
  138. data/lib/rubocop/cop/chef/modernize/includes_mixin_shellout.rb +2 -1
  139. data/lib/rubocop/cop/chef/modernize/libarchive_file.rb +2 -1
  140. data/lib/rubocop/cop/chef/modernize/macos_user_defaults.rb +2 -1
  141. data/lib/rubocop/cop/chef/modernize/minitest_handler_usage.rb +2 -1
  142. data/lib/rubocop/cop/chef/modernize/node_init_package.rb +18 -9
  143. data/lib/rubocop/cop/chef/modernize/node_roles_include.rb +2 -1
  144. data/lib/rubocop/cop/chef/modernize/ohai_default_recipe.rb +2 -1
  145. data/lib/rubocop/cop/chef/modernize/openssl_rsa_key_resource.rb +2 -1
  146. data/lib/rubocop/cop/chef/modernize/openssl_x509_resource.rb +2 -1
  147. data/lib/rubocop/cop/chef/modernize/osx_config_profile_resource.rb +2 -1
  148. data/lib/rubocop/cop/chef/modernize/powershell_expand_archive.rb +2 -1
  149. data/lib/rubocop/cop/chef/modernize/powershell_guard_interpreter.rb +2 -1
  150. data/lib/rubocop/cop/chef/modernize/powershell_install_package.rb +2 -1
  151. data/lib/rubocop/cop/chef/modernize/powershell_install_windowsfeature.rb +2 -1
  152. data/lib/rubocop/cop/chef/modernize/property_with_name_attribute.rb +2 -1
  153. data/lib/rubocop/cop/chef/modernize/provides_initializer.rb +2 -1
  154. data/lib/rubocop/cop/chef/modernize/resource_name_initializer.rb +2 -1
  155. data/lib/rubocop/cop/chef/modernize/resource_set_or_return.rb +2 -1
  156. data/lib/rubocop/cop/chef/modernize/resource_with_attributes.rb +2 -1
  157. data/lib/rubocop/cop/chef/modernize/respond_to_compile_time.rb +2 -1
  158. data/lib/rubocop/cop/chef/modernize/respond_to_metadata.rb +2 -1
  159. data/lib/rubocop/cop/chef/modernize/respond_to_provides.rb +2 -1
  160. data/lib/rubocop/cop/chef/modernize/respond_to_resource_name.rb +2 -1
  161. data/lib/rubocop/cop/chef/modernize/sc_windows_resource.rb +2 -1
  162. data/lib/rubocop/cop/chef/modernize/seven_zip_archive.rb +2 -1
  163. data/lib/rubocop/cop/chef/modernize/shell_out_helper.rb +2 -1
  164. data/lib/rubocop/cop/chef/modernize/shellouts_to_chocolatey.rb +2 -1
  165. data/lib/rubocop/cop/chef/modernize/simplify_apt_ppa_setup.rb +2 -1
  166. data/lib/rubocop/cop/chef/modernize/systctl_param_resource.rb +2 -1
  167. data/lib/rubocop/cop/chef/modernize/unnecessary_mixlib_shellout_require.rb +2 -1
  168. data/lib/rubocop/cop/chef/modernize/use_multipackage_installs.rb +2 -1
  169. data/lib/rubocop/cop/chef/modernize/use_require_relative.rb +2 -1
  170. data/lib/rubocop/cop/chef/modernize/whyrun_supported_true.rb +2 -1
  171. data/lib/rubocop/cop/chef/modernize/windows_default_recipe.rb +2 -1
  172. data/lib/rubocop/cop/chef/modernize/windows_registry_uac.rb +2 -1
  173. data/lib/rubocop/cop/chef/modernize/windows_zipfile.rb +2 -1
  174. data/lib/rubocop/cop/chef/modernize/zipfile_resource.rb +2 -1
  175. data/lib/rubocop/cop/chef/modernize/zypper_repo.rb +2 -1
  176. data/lib/rubocop/cop/chef/redundant/apt_repository_distribution_default.rb +2 -1
  177. data/lib/rubocop/cop/chef/redundant/apt_repository_notifies_apt_update.rb +2 -1
  178. data/lib/rubocop/cop/chef/redundant/attribute_metadata.rb +2 -1
  179. data/lib/rubocop/cop/chef/redundant/conflicts_metadata.rb +2 -1
  180. data/lib/rubocop/cop/chef/redundant/custom_resource_with_allowed_actions.rb +2 -1
  181. data/lib/rubocop/cop/chef/redundant/double_compile_time.rb +65 -0
  182. data/lib/rubocop/cop/chef/redundant/grouping_metadata.rb +2 -1
  183. data/lib/rubocop/cop/chef/redundant/long_description_metadata.rb +2 -1
  184. data/lib/rubocop/cop/chef/redundant/multiple_platform_checks.rb +61 -0
  185. data/lib/rubocop/cop/chef/redundant/name_property_and_required.rb +2 -1
  186. data/lib/rubocop/cop/chef/redundant/ohai_attribute_to_string.rb +69 -0
  187. data/lib/rubocop/cop/chef/redundant/property_splat_regex.rb +2 -1
  188. data/lib/rubocop/cop/chef/redundant/property_with_default_and_required.rb +2 -1
  189. data/lib/rubocop/cop/chef/redundant/provides_metadata.rb +2 -1
  190. data/lib/rubocop/cop/chef/redundant/recipe_metadata.rb +2 -1
  191. data/lib/rubocop/cop/chef/redundant/replaces_metadata.rb +2 -1
  192. data/lib/rubocop/cop/chef/redundant/resource_with_nothing_action.rb +2 -1
  193. data/lib/rubocop/cop/chef/redundant/sensitive_property_in_resource.rb +2 -1
  194. data/lib/rubocop/cop/chef/redundant/string_property_with_nil_default.rb +2 -1
  195. data/lib/rubocop/cop/chef/redundant/suggests_metadata.rb +2 -1
  196. data/lib/rubocop/cop/chef/redundant/unnecessary_desired_state.rb +2 -1
  197. data/lib/rubocop/cop/chef/redundant/unnecessary_name_property.rb +2 -1
  198. data/lib/rubocop/cop/chef/redundant/use_create_if_missing.rb +2 -1
  199. data/lib/rubocop/cop/chef/sharing/default_maintainer_metadata.rb +2 -1
  200. data/lib/rubocop/cop/chef/sharing/empty_metadata_field.rb +2 -1
  201. data/lib/rubocop/cop/chef/sharing/include_property_descriptions.rb +2 -1
  202. data/lib/rubocop/cop/chef/sharing/include_resource_descriptions.rb +2 -1
  203. data/lib/rubocop/cop/chef/sharing/include_resource_examples.rb +60 -0
  204. data/lib/rubocop/cop/chef/sharing/insecure_cookbook_url.rb +2 -1
  205. data/lib/rubocop/cop/chef/sharing/invalid_license_string.rb +3 -2
  206. data/lib/rubocop/cop/chef/style/attribute_keys.rb +2 -1
  207. data/lib/rubocop/cop/chef/style/chef_whaaat.rb +2 -1
  208. data/lib/rubocop/cop/chef/style/comment_sentence_spacing.rb +2 -1
  209. data/lib/rubocop/cop/chef/style/comments_copyright_format.rb +2 -1
  210. data/lib/rubocop/cop/chef/style/comments_default_copyright.rb +2 -1
  211. data/lib/rubocop/cop/chef/style/comments_format.rb +2 -1
  212. data/lib/rubocop/cop/chef/style/file_mode.rb +2 -1
  213. data/lib/rubocop/cop/chef/style/immediate_notification_timing.rb +2 -1
  214. data/lib/rubocop/cop/chef/style/include_recipe_with_parentheses.rb +58 -0
  215. data/lib/rubocop/cop/chef/style/negating_only_if.rb +2 -1
  216. data/lib/rubocop/cop/chef/style/overly_complex_supports_depends_metadata.rb +2 -1
  217. data/lib/rubocop/cop/chef/style/simplify_platform_major_version_check.rb +2 -1
  218. data/lib/rubocop/cop/chef/style/true_false_resource_properties.rb +2 -1
  219. data/lib/rubocop/cop/chef/style/unnecessary_os_check.rb +3 -3
  220. data/lib/rubocop/cop/chef/style/unnecessary_platform_case_statement.rb +2 -1
  221. data/lib/rubocop/cop/chef/style/use_platform_helpers.rb +3 -3
  222. data/lib/rubocop/monkey_patches/comment_config.rb +1 -0
  223. data/lib/rubocop/monkey_patches/cop.rb +1 -0
  224. data/lib/rubocop/monkey_patches/registry_cop.rb +15 -0
  225. metadata +19 -4
@@ -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>)
@@ -32,7 +33,7 @@ module RuboCop
32
33
  # powershell_version == 4.0
33
34
  #
34
35
  class PowershellCookbookHelpers < Cop
35
- MSG = "Use node['powershell']['version'] or the new powershell_version helper available in Chef Infra Client 15.8+ instead of the deprecated PowerShell cookbook helpers.".freeze
36
+ MSG = "Use node['powershell']['version'] or the new powershell_version helper available in Chef Infra Client 15.8+ instead of the deprecated PowerShell cookbook helpers."
36
37
 
37
38
  def_node_matcher :ps_cb_helper?, <<-PATTERN
38
39
  (send
@@ -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
  # include_recipe 'foo'
31
32
  #
32
33
  class RequireRecipe < Cop
33
- MSG = 'Use include_recipe instead of the require_recipe method'.freeze
34
+ MSG = 'Use include_recipe instead of the require_recipe method'
34
35
 
35
36
  def_node_matcher :require_recipe?, <<-PATTERN
36
37
  (send nil? :require_recipe $str)
@@ -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
  # provides :SOME_PROVIDER_NAME
32
33
  #
33
34
  class ResourceOverridesProvidesMethod < Cop
34
- MSG = "Don't override the provides? method in a resource provider. Use provides :SOME_PROVIDER_NAME instead. This will cause failures in Chef Infra Client 13 and later.".freeze
35
+ MSG = "Don't override the provides? method in a resource provider. Use provides :SOME_PROVIDER_NAME instead. This will cause failures in Chef Infra Client 13 and later."
35
36
 
36
37
  def_node_search :provides, '(send nil? :provides ...)'
37
38
 
@@ -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>)
@@ -29,7 +30,7 @@ module RuboCop
29
30
  # my_resource = MyResource.resource_name
30
31
  #
31
32
  class ResourceUsesDslNameMethod < Cop
32
- MSG = 'Use resource_name instead of the dsl_name method in resources. This will cause failures in Chef Infra Client 13 and later.'.freeze
33
+ MSG = 'Use resource_name instead of the dsl_name method in resources. This will cause failures in Chef Infra Client 13 and later.'
33
34
 
34
35
  def on_send(node)
35
36
  add_offense(node, location: :expression, message: MSG, severity: :warning) if node.method_name == :dsl_name
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -30,7 +31,7 @@ module RuboCop
30
31
  include RuboCop::Chef::CookbookHelpers
31
32
  include RangeHelp
32
33
 
33
- MSG = 'Starting with Chef Infra Client 16, using `resource_name` without also using `provides` will result in resource failures. Make sure to use both `resource_name` and `provides` to change the name of the resource. You can also omit `resource_name` entirely if the value set matches the name Chef Infra Client automatically assigns based on COOKBOOKNAME_FILENAME.'.freeze
34
+ MSG = 'Starting with Chef Infra Client 16, using `resource_name` without also using `provides` will result in resource failures. Make sure to use both `resource_name` and `provides` to change the name of the resource. You can also omit `resource_name` entirely if the value set matches the name Chef Infra Client automatically assigns based on COOKBOOKNAME_FILENAME.'
34
35
 
35
36
  def_node_matcher :resource_name?, '(send nil? :resource_name (sym $_ ))'
36
37
 
@@ -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>)
@@ -26,7 +27,7 @@ module RuboCop
26
27
  # provider_base ::Chef::Provider::SomethingSomething
27
28
  #
28
29
  class ResourceUsesProviderBaseMethod < Cop
29
- MSG = "Don't use the deprecated provider_base method in a resource to specify the provider module to use. Instead, the provider should call provides to register itself, or the resource should call provider to specify the provider to use. This will cause failures in Chef Infra Client 13 and later.".freeze
30
+ MSG = "Don't use the deprecated provider_base method in a resource to specify the provider module to use. Instead, the provider should call provides to register itself, or the resource should call provider to specify the provider to use. This will cause failures in Chef Infra Client 13 and later."
30
31
 
31
32
  def on_send(node)
32
33
  add_offense(node, location: :expression, message: MSG, severity: :warning) if node.method_name == :provider_base
@@ -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>)
@@ -34,7 +35,7 @@ module RuboCop
34
35
  # end
35
36
  #
36
37
  class ResourceUsesUpdatedMethod < Cop
37
- MSG = "Don't use updated = true/false to update resource state. This will cause failures in Chef Infra Client 13 and later.".freeze
38
+ MSG = "Don't use updated = true/false to update resource state. This will cause failures in Chef Infra Client 13 and later."
38
39
 
39
40
  def on_lvasgn(node)
40
41
  add_offense(node, location: :expression, message: MSG, severity: :warning) if node.node_parts.first == :updated
@@ -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>)
@@ -34,7 +35,7 @@ module RuboCop
34
35
  class Ruby27KeywordArgumentWarnings < Cop
35
36
  include RuboCop::Chef::CookbookHelpers
36
37
 
37
- MSG = 'Pass options to shell_out helpers without the brackets to avoid Ruby 2.7 deprecation warnings.'.freeze
38
+ MSG = 'Pass options to shell_out helpers without the brackets to avoid Ruby 2.7 deprecation warnings.'
38
39
 
39
40
  def_node_matcher :positional_shellout?, <<-PATTERN
40
41
  (send nil? {:shell_out :shell_out!} ... $(hash ... ))
@@ -48,7 +49,7 @@ module RuboCop
48
49
 
49
50
  def autocorrect(node)
50
51
  lambda do |corrector|
51
- # @todo when we drop ruby 2.4 support we can convert to to just delete_prefix delete_suffix
52
+ # @todo when we drop ruby 2.4 support we can convert this to just delete_prefix delete_suffix
52
53
  corrector.replace(node.loc.expression, node.loc.expression.source.gsub(/^{/, '').gsub(/}$/, ''))
53
54
  end
54
55
  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>)
@@ -42,7 +43,7 @@ module RuboCop
42
43
  class RubyBlockCreateAction < Cop
43
44
  include RuboCop::Chef::CookbookHelpers
44
45
 
45
- MSG = 'Use the :run action in the ruby_block resource instead of the deprecated :create action'.freeze
46
+ MSG = 'Use the :run action in the ruby_block resource instead of the deprecated :create action'
46
47
 
47
48
  def on_block(node)
48
49
  match_property_in_resource?(:ruby_block, 'action', node) do |ruby_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>)
@@ -33,7 +34,7 @@ module RuboCop
33
34
  # shell_out!('/bin/foo')
34
35
  #
35
36
  class UsesRunCommandHelper < Cop
36
- MSG = "Use 'shell_out!' instead of the legacy 'run_command' or 'run_command_with_systems_locale' helpers for shelling out. The run_command helper was removed in Chef Infra Client 13.".freeze
37
+ MSG = "Use 'shell_out!' instead of the legacy 'run_command' or 'run_command_with_systems_locale' helpers for shelling out. The run_command helper was removed in Chef Infra Client 13."
37
38
 
38
39
  def_node_matcher :calls_run_command?, '(send nil? {:run_command :run_command_with_systems_locale} ...)'
39
40
  def_node_matcher :require_mixin_command?, '(send nil? :require (str "chef/mixin/command"))'
@@ -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>)
@@ -35,7 +36,7 @@ module RuboCop
35
36
  # search(:node, '*:*', start: 0)
36
37
  #
37
38
  class SearchUsesPositionalParameters < Cop
38
- MSG = "Don't use deprecated positional parameters in cookbook search queries.".freeze
39
+ MSG = "Don't use deprecated positional parameters in cookbook search queries."
39
40
 
40
41
  NAMED_PARAM_LOOKUP_TABLE = [nil, nil, 'start', 'rows', 'filter_result'].freeze
41
42
 
@@ -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
  class UseInlineResourcesDefined < Cop
32
33
  include RangeHelp
33
34
 
34
- MSG = 'use_inline_resources is now the default for resources in Chef Infra Client 13+ and does not need to be specified.'.freeze
35
+ MSG = 'use_inline_resources is now the default for resources in Chef Infra Client 13+ and does not need to be specified.'
35
36
 
36
37
  def on_send(node)
37
38
  if node.method_name == :use_inline_resources
@@ -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>)
@@ -43,7 +44,7 @@ module RuboCop
43
44
  class UserDeprecatedSupportsProperty < Cop
44
45
  include RuboCop::Chef::CookbookHelpers
45
46
 
46
- MSG = "The supports property was removed in Chef Infra Client 13 in favor of individual 'manage_home' and 'non_unique' properties.".freeze
47
+ MSG = "The supports property was removed in Chef Infra Client 13 in favor of individual 'manage_home' and 'non_unique' properties."
47
48
 
48
49
  def on_block(node)
49
50
  match_property_in_resource?(:user, 'supports', node) do |property|
@@ -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
 
39
40
  minimum_target_chef_version '12.5'
40
41
 
41
- MSG = "Use the 'path' variable in the verify property and not the 'file' variable which was removed in Chef Infra Client 13.".freeze
42
+ MSG = "Use the 'path' variable in the verify property and not the 'file' variable which was removed in Chef Infra Client 13."
42
43
 
43
44
  def on_block(node)
44
45
  match_property_in_resource?(nil, 'verify', node) do |verify|
@@ -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>)
@@ -43,7 +44,7 @@ module RuboCop
43
44
  class WindowsFeatureServermanagercmd < Cop
44
45
  include RuboCop::Chef::CookbookHelpers
45
46
 
46
- MSG = 'The `windows_feature` resource no longer supports setting the `install_method` to `:servermanagercmd`. `:windows_feature_dism` or `:windows_feature_powershell` should be used instead.'.freeze
47
+ MSG = 'The `windows_feature` resource no longer supports setting the `install_method` to `:servermanagercmd`. `:windows_feature_dism` or `:windows_feature_powershell` should be used instead.'
47
48
 
48
49
  def on_block(node)
49
50
  match_property_in_resource?(:windows_feature, :install_method, 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>)
@@ -45,7 +46,7 @@ module RuboCop
45
46
 
46
47
  minimum_target_chef_version '13.0'
47
48
 
48
- MSG = 'The :change action in the windows_task resource was removed when windows_task was added to Chef Infra Client 13+. The default action of :create should can now be used to create an update tasks.'.freeze
49
+ MSG = 'The :change action in the windows_task resource was removed when windows_task was added to Chef Infra Client 13+. The default action of :create should can now be used to create an update tasks.'
49
50
 
50
51
  def on_block(node)
51
52
  match_property_in_resource?(:windows_task, 'action', node) do |action_node|
@@ -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>)
@@ -39,7 +40,7 @@ module RuboCop
39
40
 
40
41
  minimum_target_chef_version '14.0'
41
42
 
42
- MSG = "Use node['platform_version'] and node['kernel'] data introduced in Chef Infra Client 14 instead of the deprecated Windows::VersionHelper helpers from the Windows cookbook.".freeze
43
+ MSG = "Use node['platform_version'] and node['kernel'] data introduced in Chef Infra Client 14 instead of the deprecated Windows::VersionHelper helpers from the Windows cookbook."
43
44
 
44
45
  def_node_matcher :windows_helper?, <<-PATTERN
45
46
  (send ( const ( const {nil? cbase} :Windows ) :VersionHelper ) $_ )
@@ -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>)
@@ -26,7 +27,7 @@ module RuboCop
26
27
  # include_recipe 'xml::ruby'
27
28
  #
28
29
  class IncludingXMLRubyRecipe < Cop
29
- 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
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.'
30
31
 
31
32
  def_node_matcher :xml_ruby_recipe?, <<-PATTERN
32
33
  (send nil? :include_recipe (str "xml::ruby"))
@@ -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>)
@@ -29,7 +30,7 @@ module RuboCop
29
30
  class IncludingYumDNFCompatRecipe < Cop
30
31
  include RangeHelp
31
32
 
32
- 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
33
+ 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.'
33
34
 
34
35
  def_node_matcher :yum_dnf_compat_recipe_usage?, <<-PATTERN
35
36
  (send nil? :include_recipe (str "yum::dnf_yum_compat"))
@@ -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 Berksfile < Cop
25
26
  include RangeHelp
26
27
 
27
- MSG = 'Policyfiles should be used for cookbook dependency solving instead of a Berkshelf Berksfile.'.freeze
28
+ MSG = 'Policyfiles should be used for cookbook dependency solving instead of a Berkshelf Berksfile.'
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:: Copyright 2019, Chef Software Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -26,7 +27,7 @@ module RuboCop
26
27
  # data_bag_item('admins', login)
27
28
  # data_bag(data_bag_name)
28
29
  class CookbookUsesDatabags < Cop
29
- MSG = 'Cookbook uses data bags, which cannot be used in the Effortless Infra pattern'.freeze
30
+ MSG = 'Cookbook uses data bags, which cannot be used in the Effortless Infra pattern'
30
31
 
31
32
  def on_send(node)
32
33
  add_offense(node, location: :expression, message: MSG, severity: :refactor) if %i(data_bag data_bag_item).include?(node.method_name)
@@ -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>)
@@ -27,7 +28,7 @@ module RuboCop
27
28
  # node.chef_environment == "production"
28
29
  #
29
30
  class CookbookUsesEnvironmments < Cop
30
- MSG = 'Cookbook uses environments, which cannot be used in Policyfiles or Effortless Infra'.freeze
31
+ MSG = 'Cookbook uses environments, which cannot be used in Policyfiles or Effortless Infra'
31
32
 
32
33
  def on_send(node)
33
34
  if %i(environment chef_environment).include?(node.method_name) && node.receiver && node.receiver.send_type? && node.receiver.method_name == :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>)
@@ -26,7 +27,7 @@ module RuboCop
26
27
  # node.policy_group == "foo"
27
28
  #
28
29
  class CookbookUsesPolicygroups < Cop
29
- MSG = 'Cookbook uses Policy Groups, which cannot be used with Effortless Infra'.freeze
30
+ MSG = 'Cookbook uses Policy Groups, which cannot be used with Effortless Infra'
30
31
 
31
32
  def on_send(node)
32
33
  if node.method_name == :policy_group && node.receiver && node.receiver.send_type? && node.receiver.method_name == :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>)
@@ -27,7 +28,7 @@ module RuboCop
27
28
  # node.roles.include?('webserver')
28
29
  #
29
30
  class CookbookUsesRoles < Cop
30
- MSG = 'Cookbook uses roles, which cannot be used in Policyfiles or Effortless Infra'.freeze
31
+ MSG = 'Cookbook uses roles, which cannot be used in Policyfiles or Effortless Infra'
31
32
 
32
33
  def on_send(node)
33
34
  if %i(role? roles).include?(node.method_name) && node.receiver && node.receiver.send_type? && node.receiver.method_name == :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>)
@@ -27,7 +28,7 @@ module RuboCop
27
28
  # search(:node, 'role:bar')
28
29
  #
29
30
  class SearchForEnvironmentsOrRoles < Cop
30
- MSG = 'Cookbook uses search with a node query that looks for a role or environment'.freeze
31
+ MSG = 'Cookbook uses search with a node query that looks for a role or environment'
31
32
 
32
33
  def on_send(node)
33
34
  if node.method_name == :search && node.arguments[1]&.value&.match?(/chef_environment|role/)
@@ -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>)
@@ -26,7 +27,7 @@ module RuboCop
26
27
  # search(:node, 'run_list:recipe\[bacula\:\:server\]')
27
28
  #
28
29
  class CookbookUsesSearch < Cop
29
- MSG = 'Cookbook uses search, which cannot be used in the Effortless Infra pattern'.freeze
30
+ MSG = 'Cookbook uses search, which cannot be used in the Effortless Infra pattern'
30
31
 
31
32
  def on_send(node)
32
33
  add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :search
@@ -0,0 +1,57 @@
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
+ module RuboCop
19
+ module Cop
20
+ module Chef
21
+ module ChefModernize
22
+ # Use the custom resource language's `action :my_action` blocks instead of creating actions with methods.
23
+ #
24
+ # @example
25
+ #
26
+ # # bad
27
+ # def action_create
28
+ # # :create action code here
29
+ # end
30
+ #
31
+ # # good
32
+ # action :create do
33
+ # # :create action code here
34
+ # end
35
+ #
36
+ class ActionMethodInResource < Base
37
+ extend AutoCorrector
38
+
39
+ MSG = "Use the custom resource language's `action :my_action` blocks instead of creating actions with methods."
40
+
41
+ def_node_search :includes_poise?, '(send nil? :include (const nil? :Poise))'
42
+
43
+ def on_def(node)
44
+ return unless node.method_name.to_s.start_with?('action_') # when we stop support for Ruby < 2.7 the .to_s can go away here
45
+ return if node.arguments? # if they passed in arguments they may actually need this
46
+ return if node.parent && includes_poise?(node.parent)
47
+
48
+ add_offense(node.loc.expression, message: MSG, severity: :refactor) do |corrector|
49
+ # @todo when we drop ruby 2.4 support we can convert this to use delete_suffix
50
+ corrector.replace(node.loc.expression, node.source.gsub("def #{node.method_name}", "action :#{node.method_name.to_s.gsub(/^action_/, '')} do"))
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ 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>)
@@ -40,7 +41,7 @@ module RuboCop
40
41
  class AllowedActionsFromInitialize < Cop
41
42
  include RangeHelp
42
43
 
43
- MSG = 'The allowed actions of a resource can be set with the "allowed_actions" helper instead of using the initialize method.'.freeze
44
+ MSG = 'The allowed actions of a resource can be set with the "allowed_actions" helper instead of using the initialize method.'
44
45
 
45
46
  def on_def(node)
46
47
  return unless node.method_name == :initialize