cookstyle 6.2.9 → 6.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/config/cookstyle.yml +306 -15
  4. data/config/disable_all.yml +21 -3
  5. data/config/upstream.yml +141 -35
  6. data/lib/cookstyle.rb +1 -1
  7. data/lib/cookstyle/version.rb +2 -2
  8. data/lib/rubocop/chef/platform_helpers.rb +2 -1
  9. data/lib/rubocop/cop/chef/correctness/invalid_platform_family_values_in_case.rb +77 -0
  10. data/lib/rubocop/cop/chef/correctness/invalid_platform_values_in_case.rb +77 -0
  11. data/lib/rubocop/cop/chef/correctness/lazy_eval_node_attribute_defaults.rb +56 -0
  12. data/lib/rubocop/cop/chef/correctness/node_normal.rb +1 -1
  13. data/lib/rubocop/cop/chef/correctness/node_normal_unless.rb +1 -1
  14. data/lib/rubocop/cop/chef/correctness/openssl_password_helpers.rb +45 -0
  15. data/lib/rubocop/cop/chef/deprecation/depends_compat_resource.rb +1 -1
  16. data/lib/rubocop/cop/chef/deprecation/depends_partial_search.rb +1 -1
  17. data/lib/rubocop/cop/chef/deprecation/deprecated_chefspec_platform.rb +10 -4
  18. data/lib/rubocop/cop/chef/deprecation/deprecated_shellout_methods.rb +65 -0
  19. data/lib/rubocop/cop/chef/deprecation/easy_install.rb +2 -2
  20. data/lib/rubocop/cop/chef/deprecation/erl_call.rb +1 -1
  21. data/lib/rubocop/cop/chef/deprecation/locale_lc_all_property.rb +2 -2
  22. data/lib/rubocop/cop/chef/deprecation/node_methods_not_attributes.rb +1 -1
  23. data/lib/rubocop/cop/chef/deprecation/node_set.rb +2 -3
  24. data/lib/rubocop/cop/chef/deprecation/node_set_unless.rb +2 -3
  25. data/lib/rubocop/cop/chef/deprecation/powershell_cookbook_helpers.rb +3 -3
  26. data/lib/rubocop/cop/chef/deprecation/resource_uses_only_resource_name.rb +77 -0
  27. data/lib/rubocop/cop/chef/deprecation/ruby_27_keyword_argument_warnings.rb +59 -0
  28. data/lib/rubocop/cop/chef/deprecation/user_supports_property.rb +6 -1
  29. data/lib/rubocop/cop/chef/deprecation/xml_ruby_recipe.rb +3 -3
  30. data/lib/rubocop/cop/chef/modernize/includes_mixin_shellout.rb +24 -3
  31. data/lib/rubocop/cop/chef/modernize/respond_to_compile_time.rb +93 -0
  32. data/lib/rubocop/cop/chef/modernize/respond_to_provides.rb +15 -5
  33. data/lib/rubocop/cop/chef/modernize/shell_out_helper.rb +64 -0
  34. data/lib/rubocop/cop/chef/modernize/use_multipackage_installs.rb +8 -4
  35. data/lib/rubocop/cop/chef/style/overly_complex_supports_depends_metadata.rb +1 -1
  36. data/lib/rubocop/cop/target_chef_version.rb +4 -0
  37. data/lib/rubocop/monkey_patches/team.rb +24 -0
  38. metadata +14 -5
  39. data/lib/rubocop/monkey_patches/commissioner.rb +0 -26
@@ -0,0 +1,64 @@
1
+ #
2
+ # Copyright:: 2019, Chef Software Inc.
3
+ # Author:: Tim Smith (<tsmith@chef.io>)
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ module RuboCop
19
+ module Cop
20
+ module Chef
21
+ module ChefModernize
22
+ # Use the built-in `shell_out` helper available in Chef Infra Client 12.11+ instead of calling `Mixlib::ShellOut.new('foo').run_command`.
23
+ #
24
+ # @example
25
+ #
26
+ # # bad
27
+ # Mixlib::ShellOut.new('foo').run_command
28
+ #
29
+ # # good
30
+ # shell_out('foo')
31
+ #
32
+ class ShellOutHelper < Cop
33
+ extend TargetChefVersion
34
+
35
+ minimum_target_chef_version '12.11'
36
+
37
+ MSG = "Use the built-in `shell_out` helper available in Chef Infra Client 12.11+ instead of calling `Mixlib::ShellOut.new('foo').run_command`.".freeze
38
+
39
+ def_node_matcher :mixlib_shellout_run_cmd?, <<-PATTERN
40
+ (send
41
+ (send
42
+ (const
43
+ (const nil? :Mixlib) :ShellOut) :new
44
+ $(...)) :run_command)
45
+ PATTERN
46
+
47
+ def on_send(node)
48
+ mixlib_shellout_run_cmd?(node) do
49
+ add_offense(node, location: :expression, message: MSG, severity: :refactor)
50
+ end
51
+ end
52
+
53
+ def autocorrect(node)
54
+ mixlib_shellout_run_cmd?(node) do |cmd|
55
+ lambda do |corrector|
56
+ corrector.replace(node.loc.expression, "shell_out(#{cmd.loc.expression.source})")
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -47,12 +47,14 @@ module RuboCop
47
47
  (send
48
48
  $(array ... ) :each)
49
49
  (args ... )
50
- (block
50
+ {(block
51
51
  (send nil? :package
52
52
  (lvar ... ))
53
53
  (args)
54
54
  (send nil? :action
55
- (sym :install)))) nil?)
55
+ (sym :install)))
56
+ (send nil? :package
57
+ (lvar _))}) nil?)
56
58
  PATTERN
57
59
 
58
60
  def_node_matcher :package_array_install?, <<-PATTERN
@@ -60,12 +62,14 @@ module RuboCop
60
62
  (send
61
63
  $(array ... ) :each)
62
64
  (args ... )
63
- (block
65
+ {(block
64
66
  (send nil? :package
65
67
  (lvar ... ))
66
68
  (args)
67
69
  (send nil? :action
68
- (sym :install))))
70
+ (sym :install)))
71
+ (send nil? :package
72
+ (lvar _))})
69
73
  PATTERN
70
74
 
71
75
  # see if all platforms in the when condition are multipackage compliant
@@ -18,7 +18,7 @@ module RuboCop
18
18
  module Cop
19
19
  module Chef
20
20
  module ChefStyle
21
- # Don't loop over an array to set cookbook dependencies or supported platforms if you have fewer than three values to set. Setting multiple `supports` or `depends` values is simpler and easier to understand for new users.
21
+ # Don't loop over an array to set cookbook dependencies or supported platforms if you have fewer than three values to set. Setting multiple `supports` or `depends` values is simpler and easier to understand for new users.
22
22
  #
23
23
  # @example
24
24
  #
@@ -6,6 +6,10 @@ module RuboCop
6
6
  module Cop
7
7
  # Common functionality for checking target chef version.
8
8
  module TargetChefVersion
9
+ def required_minimum_chef_version
10
+ @minimum_target_chef_version
11
+ end
12
+
9
13
  def minimum_target_chef_version(version)
10
14
  @minimum_target_chef_version = version
11
15
  end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ class Team
6
+ def support_target_chef_version?(cop)
7
+ return true unless cop.class.respond_to?(:support_target_chef_version?)
8
+
9
+ cop.class.support_target_chef_version?(cop.target_chef_version)
10
+ end
11
+
12
+ ### START COOKSTYLE MODIFICATION
13
+ def roundup_relevant_cops(filename)
14
+ cops.reject do |cop|
15
+ cop.excluded_file?(filename) ||
16
+ !support_target_ruby_version?(cop) ||
17
+ !support_target_chef_version?(cop) ||
18
+ !support_target_rails_version?(cop)
19
+ end
20
+ end
21
+ ### END COOKSTYLE MODIFICATION
22
+ end
23
+ end
24
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cookstyle
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.2.9
4
+ version: 6.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thom May
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-04-04 00:00:00.000000000 Z
12
+ date: 2020-06-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rubocop
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - '='
19
19
  - !ruby/object:Gem::Version
20
- version: 0.81.0
20
+ version: 0.85.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - '='
26
26
  - !ruby/object:Gem::Version
27
- version: 0.81.0
27
+ version: 0.85.0
28
28
  description:
29
29
  email:
30
30
  - thom@chef.io
@@ -57,17 +57,21 @@ files:
57
57
  - lib/rubocop/cop/chef/correctness/incorrect_library_injection.rb
58
58
  - lib/rubocop/cop/chef/correctness/invalid_notification_timing.rb
59
59
  - lib/rubocop/cop/chef/correctness/invalid_platform_family_helper.rb
60
+ - lib/rubocop/cop/chef/correctness/invalid_platform_family_values_in_case.rb
60
61
  - lib/rubocop/cop/chef/correctness/invalid_platform_helper.rb
61
62
  - lib/rubocop/cop/chef/correctness/invalid_platform_metadata.rb
63
+ - lib/rubocop/cop/chef/correctness/invalid_platform_values_in_case.rb
62
64
  - lib/rubocop/cop/chef/correctness/invalid_value_for_platform_family_helper.rb
63
65
  - lib/rubocop/cop/chef/correctness/invalid_value_for_platform_helper.rb
64
66
  - lib/rubocop/cop/chef/correctness/invalid_version_metadata.rb
67
+ - lib/rubocop/cop/chef/correctness/lazy_eval_node_attribute_defaults.rb
65
68
  - lib/rubocop/cop/chef/correctness/malformed_value_for_platform.rb
66
69
  - lib/rubocop/cop/chef/correctness/metadata_missing_name.rb
67
70
  - lib/rubocop/cop/chef/correctness/node_normal.rb
68
71
  - lib/rubocop/cop/chef/correctness/node_normal_unless.rb
69
72
  - lib/rubocop/cop/chef/correctness/node_save.rb
70
73
  - lib/rubocop/cop/chef/correctness/notifies_action_not_symbol.rb
74
+ - lib/rubocop/cop/chef/correctness/openssl_password_helpers.rb
71
75
  - lib/rubocop/cop/chef/correctness/powershell_delete_file.rb
72
76
  - lib/rubocop/cop/chef/correctness/resource_sets_internal_properties.rb
73
77
  - lib/rubocop/cop/chef/correctness/resource_sets_name_property.rb
@@ -89,6 +93,7 @@ files:
89
93
  - lib/rubocop/cop/chef/deprecation/deprecated_chefspec_platform.rb
90
94
  - lib/rubocop/cop/chef/deprecation/deprecated_mixins.rb
91
95
  - lib/rubocop/cop/chef/deprecation/deprecated_platform_methods.rb
96
+ - lib/rubocop/cop/chef/deprecation/deprecated_shellout_methods.rb
92
97
  - lib/rubocop/cop/chef/deprecation/deprecated_windows_version_check.rb
93
98
  - lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_properties.rb
94
99
  - lib/rubocop/cop/chef/deprecation/easy_install.rb
@@ -114,9 +119,11 @@ files:
114
119
  - lib/rubocop/cop/chef/deprecation/require_recipe.rb
115
120
  - lib/rubocop/cop/chef/deprecation/resource_overrides_provides_method.rb
116
121
  - lib/rubocop/cop/chef/deprecation/resource_uses_dsl_name_method.rb
122
+ - lib/rubocop/cop/chef/deprecation/resource_uses_only_resource_name.rb
117
123
  - lib/rubocop/cop/chef/deprecation/resource_uses_provider_base_method.rb
118
124
  - lib/rubocop/cop/chef/deprecation/resource_uses_updated_method.rb
119
125
  - lib/rubocop/cop/chef/deprecation/resource_without_name_or_provides.rb
126
+ - lib/rubocop/cop/chef/deprecation/ruby_27_keyword_argument_warnings.rb
120
127
  - lib/rubocop/cop/chef/deprecation/ruby_block_create_action.rb
121
128
  - lib/rubocop/cop/chef/deprecation/run_command_helper.rb
122
129
  - lib/rubocop/cop/chef/deprecation/search_uses_positional_parameters.rb
@@ -176,11 +183,13 @@ files:
176
183
  - lib/rubocop/cop/chef/modernize/resource_name_initializer.rb
177
184
  - lib/rubocop/cop/chef/modernize/resource_set_or_return.rb
178
185
  - lib/rubocop/cop/chef/modernize/resource_with_attributes.rb
186
+ - lib/rubocop/cop/chef/modernize/respond_to_compile_time.rb
179
187
  - lib/rubocop/cop/chef/modernize/respond_to_metadata.rb
180
188
  - lib/rubocop/cop/chef/modernize/respond_to_provides.rb
181
189
  - lib/rubocop/cop/chef/modernize/respond_to_resource_name.rb
182
190
  - lib/rubocop/cop/chef/modernize/sc_windows_resource.rb
183
191
  - lib/rubocop/cop/chef/modernize/seven_zip_archive.rb
192
+ - lib/rubocop/cop/chef/modernize/shell_out_helper.rb
184
193
  - lib/rubocop/cop/chef/modernize/shellouts_to_chocolatey.rb
185
194
  - lib/rubocop/cop/chef/modernize/simplify_apt_ppa_setup.rb
186
195
  - lib/rubocop/cop/chef/modernize/systctl_param_resource.rb
@@ -236,9 +245,9 @@ files:
236
245
  - lib/rubocop/cop/chef/style/use_platform_helpers.rb
237
246
  - lib/rubocop/cop/target_chef_version.rb
238
247
  - lib/rubocop/monkey_patches/comment_config.rb
239
- - lib/rubocop/monkey_patches/commissioner.rb
240
248
  - lib/rubocop/monkey_patches/config.rb
241
249
  - lib/rubocop/monkey_patches/cop.rb
250
+ - lib/rubocop/monkey_patches/team.rb
242
251
  homepage:
243
252
  licenses:
244
253
  - Apache-2.0
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Cop
5
- class Commissioner
6
- def remove_irrelevant_cops(filename)
7
- @cops.reject! { |cop| cop.excluded_file?(filename) }
8
- @cops.reject! do |cop|
9
- cop.class.respond_to?(:support_target_ruby_version?) &&
10
- !cop.class.support_target_ruby_version?(cop.target_ruby_version)
11
- end
12
- @cops.reject! do |cop|
13
- cop.class.respond_to?(:support_target_rails_version?) &&
14
- !cop.class.support_target_rails_version?(cop.target_rails_version)
15
- end
16
-
17
- ### START COOKSTYLE MODIFICATION
18
- @cops.reject! do |cop|
19
- cop.class.respond_to?(:support_target_chef_version?) &&
20
- !cop.class.support_target_chef_version?(cop.target_chef_version)
21
- end
22
- ### END COOKSTYLE MODIFICATION
23
- end
24
- end
25
- end
26
- end