Class: RuboCop::Cop::Chef::Style::OverlyComplexSupportsDependsMetadata

Inherits:
Base
  • Object
show all
Extended by:
AutoCorrector
Defined in:
lib/rubocop/cop/chef/style/overly_complex_supports_depends_metadata.rb

Overview

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.

Examples:


# bad

%w( debian ubuntu ).each do |os|
  supports os
end

%w( apt yum ).each do |cb|
  depends cb
end

# good

supports 'debian'
supports 'ubuntu'

depends 'apt'
depends 'yum'

Constant Summary collapse

MSG =
"Don't loop over an array to set cookbook dependencies or supported platforms if you have fewer than three values to set."

Instance Method Summary collapse

Methods inherited from Base

#target_chef_version

Instance Method Details

#on_block(node) ⇒ Object



57
58
59
60
61
62
63
64
65
# File 'lib/rubocop/cop/chef/style/overly_complex_supports_depends_metadata.rb', line 57

def on_block(node)
  supports_depends_array?(node) do |array, type|
    return unless array.values.count < 3
    add_offense(node, severity: :refactor) do |corrector|
      corrected_value = array.values.map { |x| "#{type} '#{x.source}'" }
      corrector.replace(node, corrected_value.join("\n"))
    end
  end
end