cookstyle 5.5.7 → 5.6.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0322e55fbe3e8ec36d29d1cc23fccb0bb23c4025d46bcd629d476adb7bf40eba
4
- data.tar.gz: 5962352d31f41fbb630963a0ae68d096afda0d6daae6b5f49fd426794e287232
3
+ metadata.gz: b1802f69a48b5c25b599199ac6e97ebd036bc1c92a6e33653700ddcd48565f6e
4
+ data.tar.gz: 12ce2bf3e7d4b3e2cf254bfe9fad557eb7c077ae52c2572f9262fca194048d90
5
5
  SHA512:
6
- metadata.gz: 8bd4f43082807bea03e36e319a9c71cbe49f92f250b4a8e14fc8dd99b2aeaaa687e3802a4abfc575556d691f8d888b94a23231cc7c89d8ffd669baf28ae3b243
7
- data.tar.gz: 27dc56eb8c75ada36578b55a36c19d9ff1d8dfd96c0e95190581ffc5a80030918b475cd9d156219fa1559acd2d1f3d178351c009793030f0d2d70f9afa89e8d0
6
+ metadata.gz: bd1ab13eecd20c9bf2777d46da546f880a3f94cf2d0411a36ebdc7e5117974bf534489619e87cfc0eeafb26ae14d406c82f497b022054464ef440fb4068c69c3
7
+ data.tar.gz: 1cb23f278d044fc0acd6b818a94664e0c078aeeba78a639a9ade4fbadb5065addf62454fa78d31beed80209d11ecc9a54af3182223a233439b19a15210c1c63d
@@ -63,6 +63,14 @@ ChefStyle/FileMode:
63
63
  Exclude:
64
64
  - '**/metadata.rb'
65
65
 
66
+ ChefStyle/UsePlatformHelpers:
67
+ Description: Use platform? and platform_family? helpers for checking node platform in resources and recipes
68
+ Enabled: true
69
+ VersionAdded: '5.6.0'
70
+ Exclude:
71
+ - '**/metadata.rb'
72
+ - '**/libraries/*'
73
+
66
74
  ###############################
67
75
  # ChefCorrectness: Avoiding potential problems
68
76
  ###############################
@@ -274,6 +282,13 @@ ChefDeprecations/LongDescriptionMetadata:
274
282
  Include:
275
283
  - '**/metadata.rb'
276
284
 
285
+ ChefDeprecations/RecipeMetadata:
286
+ Description: The recipe metadata.rb method is not used and is unnecessary in cookbooks. Recipes should be documented in the README.md file instead.
287
+ Enabled: true
288
+ VersionAdded: '5.6.0'
289
+ Include:
290
+ - '**/metadata.rb'
291
+
277
292
  ChefDeprecations/CookbookDependsOnCompatResource:
278
293
  Description: Don't depend on the deprecated compat_resource cookbook made obsolete by Chef 12.19+
279
294
  Enabled: true
@@ -390,6 +405,13 @@ ChefDeprecations/IncludingYumDNFCompatRecipe:
390
405
  Exclude:
391
406
  - '**/metadata.rb'
392
407
 
408
+ ChefDeprecations/WindowsTaskChangeAction:
409
+ Description: 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.
410
+ Enabled: true
411
+ VersionAdded: '5.6.0'
412
+ Exclude:
413
+ - '**/metadata.rb'
414
+
393
415
  ###############################
394
416
  # ChefModernize: Cleaning up legacy code and using new built-in resources
395
417
  ###############################
@@ -568,6 +590,69 @@ ChefModernize/ShellOutToChocolatey:
568
590
  Exclude:
569
591
  - '**/metadata.rb'
570
592
 
593
+ ChefModernize/CronManageResource:
594
+ Description: The cron_manage resource was renamed to cron_access in the 6.1 release of the cron cookbook and later shipped in Chef Infra Client 14.4. The new resource name should be used.
595
+ Enabled: true
596
+ VersionAdded: '5.6.0'
597
+ Exclude:
598
+ - '**/metadata.rb'
599
+
600
+ ChefModernize/UsesZypperRepo:
601
+ Description: The zypper_repo resource was renamed zypper_repository when it was added to Chef Infra Client 13.3.
602
+ Enabled: true
603
+ VersionAdded: '5.6.0'
604
+ Exclude:
605
+ - '**/metadata.rb'
606
+
607
+ ChefModernize/DependsOnZypperCookbook:
608
+ Description: Don't include the zypper cookbook as the zypper_repository resource is built into Chef Infra Client 13.3+
609
+ Enabled: true
610
+ VersionAdded: '5.6.0'
611
+ Exclude:
612
+ - '**/metadata.rb'
613
+
614
+ ChefModernize/ExecuteTzUtil:
615
+ Description: Use the timezone resource included in Chef Infra Client 14.6+ instead of shelling out to tzutil
616
+ Enabled: true
617
+ VersionAdded: '5.6.0'
618
+ Exclude:
619
+ - '**/metadata.rb'
620
+
621
+ ChefModernize/OpensslRsaKeyResource:
622
+ Description: The openssl_rsa_key resource was renamed to openssl_rsa_private_key in Chef Infra Client 14.0. The new resource name should be used.
623
+ Enabled: true
624
+ VersionAdded: '5.6.0'
625
+ Exclude:
626
+ - '**/metadata.rb'
627
+
628
+ ChefModernize/OpensslX509Resource:
629
+ Description: The openssl_x509 resource was renamed to openssl_x509_certificate. The new resource name should be used.
630
+ Enabled: true
631
+ VersionAdded: '5.6.0'
632
+ Exclude:
633
+ - '**/metadata.rb'
634
+
635
+ ChefModernize/OsxConfigProfileResource:
636
+ Description: The osx_config_profile resource was renamed to osx_profile. The new resource name should be used.
637
+ Enabled: true
638
+ VersionAdded: '5.6.0'
639
+ Exclude:
640
+ - '**/metadata.rb'
641
+
642
+ ChefModernize/SysctlParamResource:
643
+ Description: The sysctl_param resource was renamed to sysctl when it was added to Chef Infra Client 14.0. The new resource name should be used.
644
+ Enabled: true
645
+ VersionAdded: '5.6.0'
646
+ Exclude:
647
+ - '**/metadata.rb'
648
+
649
+ ChefModernize/MacOsXUserdefaults:
650
+ Description: The mac_os_x_userdefaults resource was renamed to macos_userdefaults when it was added to Chef Infra Client 14.0. The new resource name should be used.
651
+ Enabled: true
652
+ VersionAdded: '5.6.0'
653
+ Exclude:
654
+ - '**/metadata.rb'
655
+
571
656
  ###############################
572
657
  # Migrating to new patterns
573
658
  ###############################
@@ -1,4 +1,4 @@
1
1
  module Cookstyle
2
- VERSION = "5.5.7".freeze # rubocop: disable Style/StringLiterals
2
+ VERSION = "5.6.2".freeze # rubocop: disable Style/StringLiterals
3
3
  RUBOCOP_VERSION = '0.72.0'.freeze
4
4
  end
@@ -0,0 +1,47 @@
1
+ #
2
+ # Copyright:: 2019, Chef Software Inc.
3
+ # Author:: Tim Smith (<tsmith@chef.io>)
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ module RuboCop
19
+ module Cop
20
+ module Chef
21
+ module ChefDeprecations
22
+ # The recipe metadata.rb method is not used and is unnecessary in cookbooks. Recipes should be documented
23
+ # in the README.md file instead.
24
+ #
25
+ # @example
26
+ #
27
+ # # bad
28
+ # recipe 'openldap::default', 'Install and configure OpenLDAP'
29
+ #
30
+ #
31
+ class RecipeMetadata < Cop
32
+ MSG = 'The recipe metadata.rb method is not used and is unnecessary in cookbooks. Recipes should be documented in the README.md file instead.'.freeze
33
+
34
+ def on_send(node)
35
+ add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :recipe
36
+ end
37
+
38
+ def autocorrect(node)
39
+ lambda do |corrector|
40
+ corrector.remove(node.loc.expression)
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,82 @@
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
+ module RuboCop
18
+ module Cop
19
+ module Chef
20
+ module ChefDeprecations
21
+ # The :change action in the windows_task resource was removed when windows_task was added to Chef Infra Client 13+
22
+ # The default action of :create should can now be used to create an update tasks.
23
+ #
24
+ # @example
25
+ #
26
+ # # bad
27
+ # windows_task 'chef ad-join leave start time' do
28
+ # task_name 'chef ad-join leave'
29
+ # start_day '06/09/2016'
30
+ # start_time '01:00'
31
+ # action [:change, :create]
32
+ # end
33
+ #
34
+ # # good
35
+ # windows_task 'chef ad-join leave start time' do
36
+ # task_name 'chef ad-join leave'
37
+ # start_day '06/09/2016'
38
+ # start_time '01:00'
39
+ # action :create
40
+ # end
41
+ #
42
+ class WindowsTaskChangeAction < Cop
43
+ include RuboCop::Chef::CookbookHelpers
44
+
45
+ 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
46
+
47
+ def on_block(node)
48
+ match_property_in_resource?(:windows_task, 'action', node) do |action_node|
49
+ action_values = action_node.arguments.first
50
+
51
+ if action_values.sym_type? # there's only a single action given
52
+ check_action(action_values)
53
+ else # it was an array of actions
54
+ action_values.node_parts.each { |action| check_action(action) }
55
+ end
56
+ end
57
+ end
58
+
59
+ def autocorrect(node)
60
+ if node.parent.send_type? # :change was the only action
61
+ lambda do |corrector|
62
+ corrector.replace(node.loc.expression, ':create')
63
+ end
64
+ # chances are it's [:create, :change] since that's all that makes sense, but double check that theory
65
+ elsif node.parent.child_nodes.count == 2 &&
66
+ node.parent.child_nodes.map(&:value).sort == [:change, :create]
67
+ lambda do |corrector|
68
+ corrector.replace(node.parent.loc.expression, ':create')
69
+ end
70
+ end
71
+ end
72
+
73
+ private
74
+
75
+ def check_action(ast_obj)
76
+ add_offense(ast_obj, location: :expression, message: MSG, severity: :refactor) if ast_obj.value == :change
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,49 @@
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
+ module RuboCop
18
+ module Cop
19
+ module Chef
20
+ module ChefModernize
21
+ # The cron_manage resource was renamed to cron_access in the 6.1 release of the cron
22
+ # cookbook, and later shipped in Chef Infra Client 14.4. The new resource name should
23
+ # be used.
24
+ #
25
+ # # bad
26
+ # cron_manage 'mike'
27
+ #
28
+ # # good
29
+ # cron_access 'mike'
30
+ #
31
+ class CronManageResource < Cop
32
+ include RuboCop::Chef::CookbookHelpers
33
+
34
+ MSG = 'The cron_manage resource was renamed to cron_access in the 6.1 release of the cron cookbook and later shipped in Chef Infra Client 14.4. The new resource name should be used.'.freeze
35
+
36
+ def on_send(node)
37
+ add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :cron_manage
38
+ end
39
+
40
+ def autocorrect(node)
41
+ lambda do |corrector|
42
+ corrector.replace(node.loc.expression, node.source.gsub(/^cron_manage/, 'cron_access'))
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,51 @@
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
+ module RuboCop
18
+ module Cop
19
+ module Chef
20
+ module ChefModernize
21
+ # Don't depend the zypper cookbook as the zypper_repository resource is built into
22
+ # Chef Infra Client 13.3
23
+ #
24
+ # @example
25
+ #
26
+ # # bad
27
+ # depends 'zypper'
28
+ #
29
+ class DependsOnZypperCookbook < Cop
30
+ MSG = "Don't include the zypper cookbook as the zypper_repository resource is built into Chef Infra Client 13.3+".freeze
31
+
32
+ def_node_matcher :zypper_depends?, <<-PATTERN
33
+ (send nil? :depends (str "zypper"))
34
+ PATTERN
35
+
36
+ def on_send(node)
37
+ zypper_depends?(node) do
38
+ add_offense(node, location: :expression, message: MSG, severity: :refactor)
39
+ end
40
+ end
41
+
42
+ def autocorrect(node)
43
+ lambda do |corrector|
44
+ corrector.remove(node.loc.expression)
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,74 @@
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
+ module RuboCop
18
+ module Cop
19
+ module Chef
20
+ module ChefModernize
21
+ # Instead of using the execute or powershell_script resources to to run the `tzutil` command, use
22
+ # Chef Infra Client's built-in timezone resource which is available in Chef Infra Client 14.6 and later.
23
+ #
24
+ # # bad
25
+ # execute 'set tz' do
26
+ # command 'tzutil.exe /s UTC'
27
+ # end
28
+ #
29
+ # execute 'tzutil /s UTC'
30
+ #
31
+ # powershell_script 'set windows timezone' do
32
+ # code "tzutil.exe /s UTC"
33
+ # not_if { shell_out('tzutil.exe /g').stdout.include?('UTC') }
34
+ # end
35
+ #
36
+ # # good
37
+ # timezone 'UTC'
38
+ #
39
+ class ExecuteTzUtil < Cop
40
+ include RuboCop::Chef::CookbookHelpers
41
+
42
+ MSG = 'Use the timezone resource included in Chef Infra Client 14.6+ instead of shelling out to tzutil'.freeze
43
+
44
+ def_node_matcher :execute_resource?, <<-PATTERN
45
+ (send nil? :execute $str)
46
+ PATTERN
47
+
48
+ def on_send(node)
49
+ execute_resource?(node) do
50
+ add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.arguments.first.value.match?(/^tzutil/i)
51
+ end
52
+ end
53
+
54
+ def on_block(node)
55
+ match_property_in_resource?(:execute, 'command', node) do |code_property|
56
+ add_offense(node, location: :expression, message: MSG, severity: :refactor) if calls_tzutil?(code_property)
57
+ end
58
+
59
+ match_property_in_resource?(:powershell_script, 'code', node) do |code_property|
60
+ add_offense(node, location: :expression, message: MSG, severity: :refactor) if calls_tzutil?(code_property)
61
+ end
62
+ end
63
+
64
+ private
65
+
66
+ def calls_tzutil?(ast_obj)
67
+ property_data = method_arg_ast_to_string(ast_obj)
68
+ return true if property_data && property_data.match?(/^tzutil/i)
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,56 @@
1
+ #
2
+ # Copyright:: 2019, Chef Software, Inc.
3
+ # Author:: Tim Smith (<tsmith@chef.io>)
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+ module RuboCop
18
+ module Cop
19
+ module Chef
20
+ module ChefModernize
21
+ # The mac_os_x_userdefaults resource was renamed to macos_userdefaults when it was added to Chef Infra Client
22
+ # 14.0. The new resource name should be used.
23
+ #
24
+ # # bad
25
+ # mac_os_x_userdefaults 'full keyboard access to all controls' do
26
+ # domain 'AppleKeyboardUIMode'
27
+ # global true
28
+ # value '2'
29
+ # end
30
+ #
31
+ # # good
32
+ # macos_userdefaults 'full keyboard access to all controls' do
33
+ # domain 'AppleKeyboardUIMode'
34
+ # global true
35
+ # value '2'
36
+ # end
37
+ #
38
+ class MacOsXUserdefaults < Cop
39
+ include RuboCop::Chef::CookbookHelpers
40
+
41
+ MSG = 'The mac_os_x_userdefaults resource was renamed to macos_userdefaults when it was added to Chef Infra Client 14.0. The new resource name should be used.'.freeze
42
+
43
+ def on_send(node)
44
+ add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :mac_os_x_userdefaults
45
+ end
46
+
47
+ def autocorrect(node)
48
+ lambda do |corrector|
49
+ corrector.replace(node.loc.expression, node.source.gsub(/^mac_os_x_userdefaults/, 'macos_userdefaults'))
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,52 @@
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
+ module RuboCop
18
+ module Cop
19
+ module Chef
20
+ module ChefModernize
21
+ # The openssl_rsa_key resource was renamed to openssl_rsa_private_key in Chef
22
+ # Infra Client 14.0. The new resource name should be used.
23
+ #
24
+ # # bad
25
+ # openssl_rsa_key '/etc/httpd/ssl/server.key' do
26
+ # key_length 2048
27
+ # end
28
+ #
29
+ # # good
30
+ # openssl_rsa_private_key '/etc/httpd/ssl/server.key' do
31
+ # key_length 2048
32
+ # end
33
+ #
34
+ class OpensslRsaKeyResource < Cop
35
+ include RuboCop::Chef::CookbookHelpers
36
+
37
+ MSG = 'The openssl_rsa_key resource was renamed to openssl_rsa_private_key in Chef Infra Client 14.0. The new resource name should be used.'.freeze
38
+
39
+ def on_send(node)
40
+ add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :openssl_rsa_key
41
+ end
42
+
43
+ def autocorrect(node)
44
+ lambda do |corrector|
45
+ corrector.replace(node.loc.expression, node.source.gsub(/^openssl_rsa_key/, 'openssl_rsa_private_key'))
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,58 @@
1
+ #
2
+ # Copyright:: 2019, Chef Software, Inc.
3
+ # Author:: Tim Smith (<tsmith@chef.io>)
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+ module RuboCop
18
+ module Cop
19
+ module Chef
20
+ module ChefModernize
21
+ # The openssl_x509 resource was renamed to openssl_x509_certificate.
22
+ # The new resource name should be used.
23
+ #
24
+ # # bad
25
+ # openssl_x509 '/etc/httpd/ssl/mycert.pem' do
26
+ # common_name 'www.f00bar.com'
27
+ # org 'Foo Bar'
28
+ # org_unit 'Lab'
29
+ # country 'US'
30
+ # end
31
+ #
32
+ # # good
33
+ # openssl_x509_certificate '/etc/httpd/ssl/mycert.pem' do
34
+ # common_name 'www.f00bar.com'
35
+ # org 'Foo Bar'
36
+ # org_unit 'Lab'
37
+ # country 'US'
38
+ # end
39
+ #
40
+ class OpensslX509Resource < Cop
41
+ include RuboCop::Chef::CookbookHelpers
42
+
43
+ MSG = 'The openssl_x509 resource was renamed to openssl_x509_certificate. The new resource name should be used.'.freeze
44
+
45
+ def on_send(node)
46
+ add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :openssl_x509
47
+ end
48
+
49
+ def autocorrect(node)
50
+ lambda do |corrector|
51
+ corrector.replace(node.loc.expression, node.source.gsub(/^openssl_x509/, 'openssl_x509_certificate'))
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,52 @@
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
+ module RuboCop
18
+ module Cop
19
+ module Chef
20
+ module ChefModernize
21
+ # The osx_config_profile resource was renamed to osx_profile.
22
+ # The new resource name should be used.
23
+ #
24
+ # # bad
25
+ # osx_config_profile 'Install screensaver profile' do
26
+ # profile 'screensaver/com.company.screensaver.mobileconfig'
27
+ # end
28
+ #
29
+ # # good
30
+ # osx_profile 'Install screensaver profile' do
31
+ # profile 'screensaver/com.company.screensaver.mobileconfig'
32
+ # end
33
+ #
34
+ class OsxConfigProfileResource < Cop
35
+ include RuboCop::Chef::CookbookHelpers
36
+
37
+ MSG = 'The osx_config_profile resource was renamed to osx_profile. The new resource name should be used.'.freeze
38
+
39
+ def on_send(node)
40
+ add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :osx_config_profile
41
+ end
42
+
43
+ def autocorrect(node)
44
+ lambda do |corrector|
45
+ corrector.replace(node.loc.expression, node.source.gsub(/^osx_config_profile/, 'osx_profile'))
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,52 @@
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
+ module RuboCop
18
+ module Cop
19
+ module Chef
20
+ module ChefModernize
21
+ # The sysctl_param resource was renamed to sysctl when it was added to Chef Infra Client
22
+ # 14.0. The new resource name should be used.
23
+ #
24
+ # # bad
25
+ # sysctl_param 'fs.aio-max-nr' do
26
+ # value '1048576'
27
+ # end
28
+ #
29
+ # # good
30
+ # sysctl 'fs.aio-max-nr' do
31
+ # value '1048576'
32
+ # end
33
+ #
34
+ class SysctlParamResource < Cop
35
+ include RuboCop::Chef::CookbookHelpers
36
+
37
+ MSG = 'The sysctl_param resource was renamed to sysctl when it was added to Chef Infra Client 14.0. The new resource name should be used.'.freeze
38
+
39
+ def on_send(node)
40
+ add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :sysctl_param
41
+ end
42
+
43
+ def autocorrect(node)
44
+ lambda do |corrector|
45
+ corrector.replace(node.loc.expression, node.source.gsub(/^sysctl_param/, 'sysctl'))
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,57 @@
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
+ module RuboCop
18
+ module Cop
19
+ module Chef
20
+ module ChefModernize
21
+ # The zypper_repo resource was renamed zypper_repository when it was added to Chef Infra Client 13.3.
22
+ #
23
+ # @example
24
+ #
25
+ # # bad
26
+ # zypper_repo 'apache' do
27
+ # baseurl 'http://download.opensuse.org/repositories/Apache'
28
+ # path '/openSUSE_Leap_42.2'
29
+ # type 'rpm-md'
30
+ # priority '100'
31
+ # end
32
+ #
33
+ # # good
34
+ # zypper_repository 'apache' do
35
+ # baseurl 'http://download.opensuse.org/repositories/Apache'
36
+ # path '/openSUSE_Leap_42.2'
37
+ # type 'rpm-md'
38
+ # priority '100'
39
+ # end
40
+ #
41
+ class UsesZypperRepo < Cop
42
+ MSG = 'The zypper_repo resource was renamed zypper_repository when it was added to Chef Infra Client 13.3.'.freeze
43
+
44
+ def on_send(node)
45
+ add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :zypper_repo
46
+ end
47
+
48
+ def autocorrect(node)
49
+ lambda do |corrector|
50
+ corrector.replace(node.loc.expression, node.source.gsub(/^zypper_repo/, 'zypper_repository'))
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,59 @@
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
+ module RuboCop
18
+ module Cop
19
+ module Chef
20
+ module ChefStyle
21
+ # Use the platform?() and platform_family?() helpers instead of node['platform] == 'foo'
22
+ # and node['platform_family'] == 'bar'. These helpers are easier to read and can accept multiple
23
+ # platform arguments, which greatly simplifies complex platform logic.
24
+ #
25
+ # @example
26
+ #
27
+ # # bad
28
+ # node['platform'] == 'ubuntu'
29
+ #
30
+ # # good
31
+ # platform?('ubuntu')
32
+ #
33
+ class UsePlatformHelpers < Cop
34
+ MSG = 'Use platform? and platform_family? helpers for checking node platform'.freeze
35
+
36
+ def_node_matcher :platform_check?, <<-PATTERN
37
+ ( send (send (send nil? :node) :[] $(str {"platform" "platform_family"}) ) :== $str )
38
+ PATTERN
39
+
40
+ def on_send(node)
41
+ platform_check?(node) do |type, plat|
42
+ # set these so we can use them in the auto_correct method
43
+ @type = type
44
+ @plat = plat
45
+
46
+ add_offense(node, location: :expression, message: MSG, severity: :refactor)
47
+ end
48
+ end
49
+
50
+ def autocorrect(node)
51
+ lambda do |corrector|
52
+ corrector.replace(node.loc.expression, "#{@type.value}?('#{@plat.value}')")
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ 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: 5.5.7
4
+ version: 5.6.2
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: 2019-09-06 00:00:00.000000000 Z
12
+ date: 2019-09-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -113,11 +113,13 @@ files:
113
113
  - lib/rubocop/cop/chef/deprecation/node_set.rb
114
114
  - lib/rubocop/cop/chef/deprecation/node_set_unless.rb
115
115
  - lib/rubocop/cop/chef/deprecation/provides_metadata.rb
116
+ - lib/rubocop/cop/chef/deprecation/recipe_metadata.rb
116
117
  - lib/rubocop/cop/chef/deprecation/replaces_metadata.rb
117
118
  - lib/rubocop/cop/chef/deprecation/require_recipe.rb
118
119
  - lib/rubocop/cop/chef/deprecation/suggests_metadata.rb
119
120
  - lib/rubocop/cop/chef/deprecation/use_inline_resources.rb
120
121
  - lib/rubocop/cop/chef/deprecation/user_supports_property.rb
122
+ - lib/rubocop/cop/chef/deprecation/windows_task_change_action.rb
121
123
  - lib/rubocop/cop/chef/deprecation/xml_ruby_recipe.rb
122
124
  - lib/rubocop/cop/chef/deprecation/yum_dnf_compat_recipe.rb
123
125
  - lib/rubocop/cop/chef/effortless/data_bags.rb
@@ -126,11 +128,18 @@ files:
126
128
  - lib/rubocop/cop/chef/modernize/berksfile_source.rb
127
129
  - lib/rubocop/cop/chef/modernize/build_essential.rb
128
130
  - lib/rubocop/cop/chef/modernize/chef_14_resources.rb
131
+ - lib/rubocop/cop/chef/modernize/cron_manage_resource.rb
129
132
  - lib/rubocop/cop/chef/modernize/defines_chefspec_matchers.rb
133
+ - lib/rubocop/cop/chef/modernize/depends_zypper_cookbook.rb
130
134
  - lib/rubocop/cop/chef/modernize/execute_apt_update.rb
135
+ - lib/rubocop/cop/chef/modernize/execute_tzutil.rb
131
136
  - lib/rubocop/cop/chef/modernize/includes_mixin_shellout.rb
132
137
  - lib/rubocop/cop/chef/modernize/libarchive_file.rb
138
+ - lib/rubocop/cop/chef/modernize/macos_user_defaults.rb
133
139
  - lib/rubocop/cop/chef/modernize/minitest_handler_usage.rb
140
+ - lib/rubocop/cop/chef/modernize/openssl_rsa_key_resource.rb
141
+ - lib/rubocop/cop/chef/modernize/openssl_x509_resource.rb
142
+ - lib/rubocop/cop/chef/modernize/osx_config_profile_resource.rb
134
143
  - lib/rubocop/cop/chef/modernize/powershell_expand_archive.rb
135
144
  - lib/rubocop/cop/chef/modernize/powershell_install_package.rb
136
145
  - lib/rubocop/cop/chef/modernize/powershell_install_windowsfeature.rb
@@ -142,15 +151,18 @@ files:
142
151
  - lib/rubocop/cop/chef/modernize/respond_to_resource_name.rb
143
152
  - lib/rubocop/cop/chef/modernize/seven_zip_archive.rb
144
153
  - lib/rubocop/cop/chef/modernize/shellouts_to_chocolatey.rb
154
+ - lib/rubocop/cop/chef/modernize/systctl_param_resource.rb
145
155
  - lib/rubocop/cop/chef/modernize/whyrun_supported_true.rb
146
156
  - lib/rubocop/cop/chef/modernize/windows_default_recipe.rb
147
157
  - lib/rubocop/cop/chef/modernize/windows_version_helper.rb
148
158
  - lib/rubocop/cop/chef/modernize/windows_zipfile.rb
159
+ - lib/rubocop/cop/chef/modernize/zypper_repo.rb
149
160
  - lib/rubocop/cop/chef/style/attribute_keys.rb
150
161
  - lib/rubocop/cop/chef/style/comment_sentence_spacing.rb
151
162
  - lib/rubocop/cop/chef/style/comments_copyright_format.rb
152
163
  - lib/rubocop/cop/chef/style/comments_format.rb
153
164
  - lib/rubocop/cop/chef/style/file_mode.rb
165
+ - lib/rubocop/cop/chef/style/use_platform_helpers.rb
154
166
  homepage: https://github.com/chef/cookstyle
155
167
  licenses:
156
168
  - Apache-2.0