cookstyle 7.23.0 → 7.25.9

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: 9be1741ac594805428a4c1269af0b63e1176abf6e14aa6e04c47639c1153f083
4
- data.tar.gz: b7d95d2ba12571d8a09d1a6eabaacce48e2ee0956ac91c595d7c5be5e010978b
3
+ metadata.gz: 9eb0efc1571e7c41eb101724d88451edf016e1a7e19ed90a20d72879ee5b08ff
4
+ data.tar.gz: 02ccfda204d3fa46056c093d1258fa361d730f2da893e39aa4f227ae9105191f
5
5
  SHA512:
6
- metadata.gz: 4409915af7d5e193e9fcbc49c333370aa318e50c4a798ccee1a6b619912b4ff3bd6f8016b67f96da4f3ba10bda212e453d45fbfe5ec3a611d6eb64a78911820f
7
- data.tar.gz: cb2d001bd4d5fb913dbb6a14972bb341e43fa982a926ae30a37d3adcce6e5fc599a8e535ff53dd82cac3dddf8de8fde0ce49c1e1db9192e83ad51a99c609a0f2
6
+ metadata.gz: b7531239e1f04dcdee653d5c41c36c1a63b546e5a468ca5688eacda2b126aec1780f97cb49615bbcc5833c4cbbc8aff98833297884ad7d30c02a4ea959b9c291
7
+ data.tar.gz: cc5742cd59d0c1b416727d7e66eff1c735d485a2261c1dab54d12a8aa716cb1ebd8af1d36a745c45cb08aef876a56efed28c844edd04dd331f5a293694854c05
data/Gemfile CHANGED
@@ -6,8 +6,6 @@ gemspec
6
6
 
7
7
  group :debug do
8
8
  gem 'pry'
9
- gem 'pry-byebug'
10
- gem 'pry-stack_explorer', '<= 0.4.13' # 0.4.13+ drops support for Ruby < 2.6
11
9
  end
12
10
 
13
11
  group :docs do
@@ -15,8 +13,10 @@ group :docs do
15
13
  end
16
14
 
17
15
  group :profiling do
18
- gem 'memory_profiler'
19
- gem 'stackprof'
16
+ platforms :ruby do
17
+ gem 'memory_profiler'
18
+ gem 'stackprof'
19
+ end
20
20
  end
21
21
 
22
22
  group :rubocop_gems do
data/config/cookstyle.yml CHANGED
@@ -498,6 +498,14 @@ Chef/Correctness/PowershellFileExists:
498
498
  - '**/metadata.rb'
499
499
  - '**/Berksfile'
500
500
 
501
+ Chef/Correctness/MetadataMissingVersion:
502
+ Description: metadata.rb should define a version for the cookbook.
503
+ StyleGuide: 'chef_correctness_metadatamissingversion'
504
+ Enabled: true
505
+ VersionAdded: '7.25'
506
+ Include:
507
+ - '**/metadata.rb'
508
+
501
509
  ###############################
502
510
  # Chef/Sharing: Issues that prevent sharing code with other teams or with the Chef community in general
503
511
  ###############################
@@ -1924,6 +1932,24 @@ Chef/Modernize/ClassEvalActionClass:
1924
1932
  Include:
1925
1933
  - '**/resources/*.rb'
1926
1934
 
1935
+ Chef/Modernize/UseChefLanguageSystemdHelper:
1936
+ Description: Chef Infra Client 15.5 and later include a `systemd?` helper for checking if a Linux system uses systemd.
1937
+ StyleGuide: 'chef_modernize_usecheflanguagesystemdhelper'
1938
+ Enabled: true
1939
+ VersionAdded: '7.24.0'
1940
+ Exclude:
1941
+ - '**/metadata.rb'
1942
+ - '**/Berksfile'
1943
+
1944
+ Chef/Modernize/DeclareActionClass:
1945
+ Description: In Chef Infra Client 12.9 and later `action_class` can be used instead of `declare_action_class`.
1946
+ StyleGuide: 'chef_modernize_declareactionclass'
1947
+ Enabled: true
1948
+ VersionAdded: '7.26.0'
1949
+ Include:
1950
+ - '**/resources/*.rb'
1951
+ - '**/libraries/*.rb'
1952
+
1927
1953
  ###############################
1928
1954
  # Chef/RedundantCode: Cleanup unnecessary code in your cookbooks regardless of Chef Infra Client release
1929
1955
  ###############################
@@ -2796,6 +2822,7 @@ Style/GuardClause:
2796
2822
  # Users really shouldn't have a gem, but if they do they should do it securely
2797
2823
  Bundler/InsecureProtocolSource:
2798
2824
  Enabled: true
2825
+ AllowHttpProtocol: false
2799
2826
 
2800
2827
  # It's easier to read a simple .each and they're faster
2801
2828
  Lint/RedundantWithIndex:
@@ -221,6 +221,8 @@ Lint/AmbiguousBlockAssociation:
221
221
  Enabled: false
222
222
  Lint/AmbiguousOperator:
223
223
  Enabled: false
224
+ Lint/AmbiguousOperatorPrecedence:
225
+ Enabled: false
224
226
  Lint/AmbiguousRange:
225
227
  Enabled: false
226
228
  Lint/AmbiguousRegexpLiteral:
@@ -307,10 +309,12 @@ Lint/IdentityComparison:
307
309
  Enabled: false
308
310
  Lint/ImplicitStringConcatenation:
309
311
  Enabled: false
310
- Lint/InheritException:
312
+ Lint/IncompatibleIoSelectWithFiberScheduler:
311
313
  Enabled: false
312
314
  Lint/IneffectiveAccessModifier:
313
315
  Enabled: false
316
+ Lint/InheritException:
317
+ Enabled: false
314
318
  Lint/InterpolationCheck:
315
319
  Enabled: false
316
320
  Lint/LambdaWithoutLiteralBlock:
@@ -383,6 +387,8 @@ Lint/RegexpAsCondition:
383
387
  Enabled: false
384
388
  Lint/RequireParentheses:
385
389
  Enabled: false
390
+ Lint/RequireRelativeSelfPath:
391
+ Enabled: false
386
392
  Lint/RescueException:
387
393
  Enabled: false
388
394
  Lint/RescueType:
@@ -701,6 +707,8 @@ Style/MethodCallWithArgsParentheses:
701
707
  Enabled: false
702
708
  Style/MultilineInPatternThen:
703
709
  Enabled: false
710
+ Style/NumberedParameters:
711
+ Enabled: false
704
712
  Style/RedundantAssignment:
705
713
  Enabled: false
706
714
  Style/RedundantFetchBlock:
@@ -773,6 +781,8 @@ Style/NonNilCheck:
773
781
  Enabled: false
774
782
  Style/Not:
775
783
  Enabled: false
784
+ Style/NumberedParametersLimit:
785
+ Enabled: false
776
786
  Style/NumericLiterals:
777
787
  Enabled: false
778
788
  Style/NumericLiteralPrefix:
@@ -853,6 +863,8 @@ Style/SafeNavigation:
853
863
  Enabled: false
854
864
  Style/Sample:
855
865
  Enabled: false
866
+ Style/SelectByRegexp:
867
+ Enabled: false
856
868
  Style/SelfAssignment:
857
869
  Enabled: false
858
870
  Style/Semicolon:
@@ -945,6 +957,8 @@ Style/ZeroLengthPredicate:
945
957
  Enabled: false
946
958
  Security/Eval:
947
959
  Enabled: false
960
+ Security/IoMethods:
961
+ Enabled: false
948
962
  Security/JSONLoad:
949
963
  Enabled: false
950
964
  Security/MarshalLoad:
data/config/upstream.yml CHANGED
@@ -130,7 +130,7 @@ AllCops:
130
130
  # What MRI version of the Ruby interpreter is the inspected code intended to
131
131
  # run on? (If there is more than one, set this to the lowest version.)
132
132
  # If a value is specified for TargetRubyVersion then it is used. Acceptable
133
- # values are specificed as a float (i.e. 3.0); the teeny version of Ruby
133
+ # values are specified as a float (i.e. 3.0); the teeny version of Ruby
134
134
  # should not be included. If the project specifies a Ruby version in the
135
135
  # .tool-versions or .ruby-version files, Gemfile or gems.rb file, RuboCop will
136
136
  # try to determine the desired version of Ruby by inspecting the
@@ -209,6 +209,7 @@ Bundler/InsecureProtocolSource:
209
209
  'https://rubygems.org' if possible, or 'http://rubygems.org' if not.
210
210
  Enabled: true
211
211
  VersionAdded: '0.50'
212
+ AllowHttpProtocol: true
212
213
  Include:
213
214
  - '**/*.gemfile'
214
215
  - '**/Gemfile'
@@ -261,7 +262,7 @@ Gemspec/RequiredRubyVersion:
261
262
  Description: 'Checks that `required_ruby_version` of gemspec is specified and equal to `TargetRubyVersion` of .rubocop.yml.'
262
263
  Enabled: true
263
264
  VersionAdded: '0.52'
264
- VersionChanged: '0.89'
265
+ VersionChanged: '1.22'
265
266
  Include:
266
267
  - '**/*.gemspec'
267
268
 
@@ -957,7 +958,6 @@ Layout/LineLength:
957
958
  Enabled: true
958
959
  VersionAdded: '0.25'
959
960
  VersionChanged: '1.4'
960
- AutoCorrect: true
961
961
  Max: 120
962
962
  # To make it possible to copy or click on URIs in the code, we allow lines
963
963
  # containing a URI to be longer than Max.
@@ -1361,10 +1361,11 @@ Layout/SpaceInsideParens:
1361
1361
  StyleGuide: '#spaces-braces'
1362
1362
  Enabled: true
1363
1363
  VersionAdded: '0.49'
1364
- VersionChanged: '0.55'
1364
+ VersionChanged: '1.22'
1365
1365
  EnforcedStyle: no_space
1366
1366
  SupportedStyles:
1367
1367
  - space
1368
+ - compact
1368
1369
  - no_space
1369
1370
 
1370
1371
  Layout/SpaceInsidePercentLiteralDelimiters:
@@ -1448,6 +1449,13 @@ Lint/AmbiguousOperator:
1448
1449
  VersionAdded: '0.17'
1449
1450
  VersionChanged: '0.83'
1450
1451
 
1452
+ Lint/AmbiguousOperatorPrecedence:
1453
+ Description: >-
1454
+ Checks for expressions containing multiple binary operations with
1455
+ ambiguous precedence.
1456
+ Enabled: pending
1457
+ VersionAdded: '1.21'
1458
+
1451
1459
  Lint/AmbiguousRange:
1452
1460
  Description: Checks for ranges with ambiguous boundaries.
1453
1461
  Enabled: pending
@@ -1485,9 +1493,9 @@ Lint/BinaryOperatorWithIdenticalOperands:
1485
1493
  Lint/BooleanSymbol:
1486
1494
  Description: 'Check for `:true` and `:false` symbols.'
1487
1495
  Enabled: true
1488
- Safe: false
1496
+ SafeAutoCorrect: false
1489
1497
  VersionAdded: '0.50'
1490
- VersionChanged: '0.83'
1498
+ VersionChanged: '1.22'
1491
1499
 
1492
1500
  Lint/CircularArgumentReference:
1493
1501
  Description: "Default values in optional keyword arguments and optional ordinal arguments should not refer back to the name of the argument."
@@ -1560,6 +1568,7 @@ Lint/DeprecatedConstants:
1560
1568
  Description: 'Checks for deprecated constants.'
1561
1569
  Enabled: pending
1562
1570
  VersionAdded: '1.8'
1571
+ VersionChanged: '1.22'
1563
1572
  # You can configure deprecated constants.
1564
1573
  # If there is an alternative method, you can set alternative value as `Alternative`.
1565
1574
  # And you can set the deprecated version as `DeprecatedVersion`.
@@ -1580,6 +1589,9 @@ Lint/DeprecatedConstants:
1580
1589
  'FALSE':
1581
1590
  Alternative: 'false'
1582
1591
  DeprecatedVersion: '2.4'
1592
+ 'Net::HTTPServerException':
1593
+ Alternative: 'Net::HTTPClientException'
1594
+ DeprecatedVersion: '2.6'
1583
1595
  'Random::DEFAULT':
1584
1596
  Alternative: 'Random.new'
1585
1597
  DeprecatedVersion: '3.0'
@@ -1771,6 +1783,11 @@ Lint/ImplicitStringConcatenation:
1771
1783
  Enabled: true
1772
1784
  VersionAdded: '0.36'
1773
1785
 
1786
+ Lint/IncompatibleIoSelectWithFiberScheduler:
1787
+ Description: 'Checks for `IO.select` that is incompatible with Fiber Scheduler.'
1788
+ Enabled: pending
1789
+ VersionAdded: '1.21'
1790
+
1774
1791
  Lint/IneffectiveAccessModifier:
1775
1792
  Description: >-
1776
1793
  Checks for attempts to use `private` or `protected` to set
@@ -2034,6 +2051,11 @@ Lint/RequireParentheses:
2034
2051
  Enabled: true
2035
2052
  VersionAdded: '0.18'
2036
2053
 
2054
+ Lint/RequireRelativeSelfPath:
2055
+ Description: 'Checks for uses a file requiring itself with `require_relative`.'
2056
+ Enabled: pending
2057
+ VersionAdded: '1.22'
2058
+
2037
2059
  Lint/RescueException:
2038
2060
  Description: 'Avoid rescuing the Exception class.'
2039
2061
  StyleGuide: '#no-blind-rescues'
@@ -2563,8 +2585,9 @@ Naming/HeredocDelimiterNaming:
2563
2585
 
2564
2586
  Naming/InclusiveLanguage:
2565
2587
  Description: 'Recommend the use of inclusive language instead of problematic terms.'
2566
- Enabled: pending
2588
+ Enabled: false
2567
2589
  VersionAdded: '1.18'
2590
+ VersionChanged: '1.21'
2568
2591
  CheckIdentifiers: true
2569
2592
  CheckConstants: true
2570
2593
  CheckVariables: true
@@ -2720,6 +2743,14 @@ Security/Eval:
2720
2743
  Enabled: true
2721
2744
  VersionAdded: '0.47'
2722
2745
 
2746
+ Security/IoMethods:
2747
+ Description: >-
2748
+ Checks for the first argument to `IO.read`, `IO.binread`, `IO.write`, `IO.binwrite`,
2749
+ `IO.foreach`, and `IO.readlines`.
2750
+ Enabled: pending
2751
+ Safe: false
2752
+ VersionAdded: '1.22'
2753
+
2723
2754
  Security/JSONLoad:
2724
2755
  Description: >-
2725
2756
  Prefer usage of `JSON.parse` over `JSON.load` due to potential
@@ -2727,10 +2758,9 @@ Security/JSONLoad:
2727
2758
  Reference: 'https://ruby-doc.org/stdlib-2.7.0/libdoc/json/rdoc/JSON.html#method-i-load'
2728
2759
  Enabled: true
2729
2760
  VersionAdded: '0.43'
2730
- VersionChanged: '0.44'
2761
+ VersionChanged: '1.22'
2731
2762
  # Autocorrect here will change to a method that may cause crashes depending
2732
2763
  # on the value of the argument.
2733
- AutoCorrect: false
2734
2764
  SafeAutoCorrect: false
2735
2765
 
2736
2766
  Security/MarshalLoad:
@@ -2796,8 +2826,9 @@ Style/AndOr:
2796
2826
  Description: 'Use &&/|| instead of and/or.'
2797
2827
  StyleGuide: '#no-and-or-or'
2798
2828
  Enabled: true
2829
+ SafeAutoCorrect: false
2799
2830
  VersionAdded: '0.9'
2800
- VersionChanged: '0.25'
2831
+ VersionChanged: '1.21'
2801
2832
  # Whether `and` and `or` are banned only in conditionals (conditionals)
2802
2833
  # or completely (always).
2803
2834
  EnforcedStyle: conditionals
@@ -2831,9 +2862,9 @@ Style/ArrayJoin:
2831
2862
  Style/AsciiComments:
2832
2863
  Description: 'Use only ascii symbols in comments.'
2833
2864
  StyleGuide: '#english-comments'
2834
- Enabled: true
2865
+ Enabled: false
2835
2866
  VersionAdded: '0.9'
2836
- VersionChanged: '0.52'
2867
+ VersionChanged: '1.21'
2837
2868
  AllowedChars:
2838
2869
  - ©
2839
2870
 
@@ -2995,7 +3026,7 @@ Style/CaseEquality:
2995
3026
  Enabled: true
2996
3027
  VersionAdded: '0.9'
2997
3028
  VersionChanged: '0.89'
2998
- # If AllowOnConstant is enabled, the cop will ignore violations when the receiver of
3029
+ # If `AllowOnConstant` option is enabled, the cop will ignore violations when the receiver of
2999
3030
  # the case equality operator is a constant.
3000
3031
  #
3001
3032
  # # bad
@@ -3690,7 +3721,7 @@ Style/InPatternThen:
3690
3721
  Style/InfiniteLoop:
3691
3722
  Description: >-
3692
3723
  Use Kernel#loop for infinite loops.
3693
- This cop is unsafe in the body may raise a `StopIteration` exception.
3724
+ This cop is unsafe if the body may raise a `StopIteration` exception.
3694
3725
  Safe: false
3695
3726
  StyleGuide: '#infinite-loop'
3696
3727
  Enabled: true
@@ -4116,6 +4147,21 @@ Style/Not:
4116
4147
  VersionAdded: '0.9'
4117
4148
  VersionChanged: '0.20'
4118
4149
 
4150
+ Style/NumberedParameters:
4151
+ Description: 'Restrict the usage of numbered parameters.'
4152
+ Enabled: pending
4153
+ VersionAdded: '1.22'
4154
+ EnforcedStyle: allow_single_line
4155
+ SupportedStyles:
4156
+ - allow_single_line
4157
+ - disallow
4158
+
4159
+ Style/NumberedParametersLimit:
4160
+ Description: 'Avoid excessive numbered params in a single block.'
4161
+ Enabled: pending
4162
+ VersionAdded: '1.22'
4163
+ Max: 1
4164
+
4119
4165
  Style/NumericLiteralPrefix:
4120
4166
  Description: 'Use smallcase prefixes for numeric literals.'
4121
4167
  StyleGuide: '#numeric-literal-prefixes'
@@ -4126,7 +4172,6 @@ Style/NumericLiteralPrefix:
4126
4172
  - zero_with_o
4127
4173
  - zero_only
4128
4174
 
4129
-
4130
4175
  Style/NumericLiterals:
4131
4176
  Description: >-
4132
4177
  Add underscores to large numeric literals to improve their
@@ -4447,6 +4492,8 @@ Style/RedundantSort:
4447
4492
  `max_by` instead of `sort_by...last`, etc.
4448
4493
  Enabled: true
4449
4494
  VersionAdded: '0.76'
4495
+ VersionChanged: '1.22'
4496
+ Safe: false
4450
4497
 
4451
4498
  Style/RedundantSortBy:
4452
4499
  Description: 'Use `sort` instead of `sort_by { |x| x }`.'
@@ -4527,6 +4574,12 @@ Style/Sample:
4527
4574
  Enabled: true
4528
4575
  VersionAdded: '0.30'
4529
4576
 
4577
+ Style/SelectByRegexp:
4578
+ Description: 'Prefer grep/grep_v to select/reject with a regexp match.'
4579
+ Enabled: pending
4580
+ SafeAutoCorrect: false
4581
+ VersionAdded: '1.22'
4582
+
4530
4583
  Style/SelfAssignment:
4531
4584
  Description: >-
4532
4585
  Checks for places where self-assignment shorthand should have
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  module Cookstyle
3
- VERSION = "7.23.0" # rubocop: disable Style/StringLiterals
4
- RUBOCOP_VERSION = '1.20.0'
3
+ VERSION = "7.25.9" # rubocop: disable Style/StringLiterals
4
+ RUBOCOP_VERSION = '1.22.3'
5
5
  end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright:: 2021, 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 Correctness
22
+ # metadata.rb should define a version for the cookbook.
23
+ #
24
+ # @example
25
+ #
26
+ # #### correct
27
+ # name 'foo'
28
+ # version '1.0.0'
29
+ #
30
+ class MetadataMissingVersion < Base
31
+ extend AutoCorrector
32
+ include RangeHelp
33
+
34
+ MSG = 'metadata.rb should define a version for the cookbook.'
35
+
36
+ def_node_search :cb_version?, '(send nil? :version str ...)'
37
+
38
+ def on_new_investigation
39
+ # Using range similar to RuboCop::Cop::Naming::Filename (file_name.rb)
40
+ return if cb_version?(processed_source.ast)
41
+ range = source_range(processed_source.buffer, 1, 0)
42
+ add_offense(range, message: MSG, severity: :refactor)
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -40,7 +40,6 @@ module RuboCop
40
40
  minimum_target_chef_version '12.9'
41
41
 
42
42
  MSG = 'In Chef Infra Client 12.9 and later it is no longer necessary to call the class_eval method on the action class block.'
43
- RESTRICT_ON_SEND = [:include_recipe].freeze
44
43
 
45
44
  def_node_matcher :class_eval_action_class?, <<-PATTERN
46
45
  (block
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright:: 2021, 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 Modernize
22
+ # In Chef Infra Client 12.9 and later `action_class` can be used instead of `declare_action_class`.
23
+ #
24
+ # @example
25
+ #
26
+ # #### incorrect
27
+ # declare_action_class do
28
+ # foo
29
+ # end
30
+ #
31
+ # #### correct
32
+ # action_class do
33
+ # foo
34
+ # end
35
+ #
36
+ class DeclareActionClass < Base
37
+ extend TargetChefVersion
38
+ extend AutoCorrector
39
+
40
+ minimum_target_chef_version '12.9'
41
+
42
+ MSG = 'In Chef Infra Client 12.9 and later `action_class` can be used instead of `declare_action_class`.'
43
+ RESTRICT_ON_SEND = [:declare_action_class].freeze
44
+
45
+ def on_send(node)
46
+ add_offense(node, message: MSG, severity: :refactor) do |corrector|
47
+ corrector.replace(node, node.source.gsub('declare_action_class', 'action_class'))
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -49,6 +49,9 @@ module RuboCop
49
49
  #
50
50
  class UseChefLanguageCloudHelpers < Base
51
51
  extend AutoCorrector
52
+ extend TargetChefVersion
53
+
54
+ minimum_target_chef_version '15.5'
52
55
 
53
56
  MSG = 'Chef Infra Client 15.5 and later include cloud helpers to make detecting instances that run on public and private clouds easier.'
54
57
  RESTRICT_ON_SEND = [:==, :[]].freeze
@@ -33,6 +33,9 @@ module RuboCop
33
33
  #
34
34
  class UseChefLanguageEnvHelpers < Base
35
35
  extend AutoCorrector
36
+ extend TargetChefVersion
37
+
38
+ minimum_target_chef_version '15.5'
36
39
 
37
40
  RESTRICT_ON_SEND = [:[]].freeze
38
41
 
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright:: 2021, 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 Modernize
22
+ # Chef Infra Client 15.5 and later include a `systemd?` helper for checking if a Linux system uses systemd.
23
+ #
24
+ # @example
25
+ #
26
+ # #### incorrect
27
+ # node['init_package'] == 'systemd'
28
+ #
29
+ # #### correct
30
+ # systemd?
31
+ #
32
+ class UseChefLanguageSystemdHelper < Base
33
+ extend AutoCorrector
34
+ extend TargetChefVersion
35
+
36
+ minimum_target_chef_version '15.5'
37
+
38
+ MSG = 'Chef Infra Client 15.5 and later include a `systemd?` helper for checking if a Linux system uses systemd.'
39
+ RESTRICT_ON_SEND = [:==].freeze
40
+
41
+ def_node_matcher :node_init_package?, <<-PATTERN
42
+ (send
43
+ (send
44
+ (send nil? :node) :[]
45
+ (str "init_package")) :==
46
+ (str "systemd"))
47
+ PATTERN
48
+
49
+ def on_send(node)
50
+ node_init_package?(node) do |_cloud_name|
51
+ add_offense(node, message: MSG, severity: :refactor) do |corrector|
52
+ corrector.replace(node, 'systemd?')
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ 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: 7.23.0
4
+ version: 7.25.9
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: 2021-09-02 00:00:00.000000000 Z
12
+ date: 2021-10-27 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: 1.20.0
20
+ version: 1.22.3
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: 1.20.0
27
+ version: 1.22.3
28
28
  description:
29
29
  email:
30
30
  - thom@chef.io
@@ -71,6 +71,7 @@ files:
71
71
  - lib/rubocop/cop/chef/correctness/malformed_value_for_platform.rb
72
72
  - lib/rubocop/cop/chef/correctness/metadata_malformed_version.rb
73
73
  - lib/rubocop/cop/chef/correctness/metadata_missing_name.rb
74
+ - lib/rubocop/cop/chef/correctness/metadata_missing_version.rb
74
75
  - lib/rubocop/cop/chef/correctness/node_normal.rb
75
76
  - lib/rubocop/cop/chef/correctness/node_normal_unless.rb
76
77
  - lib/rubocop/cop/chef/correctness/node_save.rb
@@ -187,6 +188,7 @@ files:
187
188
  - lib/rubocop/cop/chef/modernize/cron_d_file_or_template.rb
188
189
  - lib/rubocop/cop/chef/modernize/cron_manage_resource.rb
189
190
  - lib/rubocop/cop/chef/modernize/databag_helpers.rb
191
+ - lib/rubocop/cop/chef/modernize/declare_action_class.rb
190
192
  - lib/rubocop/cop/chef/modernize/default_action_initializer.rb
191
193
  - lib/rubocop/cop/chef/modernize/defines_chefspec_matchers.rb
192
194
  - lib/rubocop/cop/chef/modernize/definitions.rb
@@ -239,6 +241,7 @@ files:
239
241
  - lib/rubocop/cop/chef/modernize/unnecessary_mixlib_shellout_require.rb
240
242
  - lib/rubocop/cop/chef/modernize/use_chef_language_cloud_helpers.rb
241
243
  - lib/rubocop/cop/chef/modernize/use_chef_language_env_helpers.rb
244
+ - lib/rubocop/cop/chef/modernize/use_chef_language_systemd_helper.rb
242
245
  - lib/rubocop/cop/chef/modernize/use_multipackage_installs.rb
243
246
  - lib/rubocop/cop/chef/modernize/use_require_relative.rb
244
247
  - lib/rubocop/cop/chef/modernize/whyrun_supported_true.rb