class RuboCop::Cop::Chef::Modernize::ShellOutToChocolatey

Use the Chocolatey resources built into Chef Infra Client instead of shelling out to the choco command

@example

 #### incorrect
 execute 'install package foo' do
   command "choco install --source=artifactory \"foo\" -y --no-progress --ignore-package-exit-codes"
 end

powershell_script 'add artifactory choco source' do
  code "choco source add -n=artifactory -s='https://mycorp.jfrog.io/mycorp/api/nuget/chocolatey-remote' -u foo -p bar"x
  not_if 'choco source list | findstr artifactory'
end

Constants

MSG

Public Instance Methods

on_block(node) click to toggle source
# File lib/rubocop/cop/chef/modernize/shellouts_to_chocolatey.rb, line 41
def on_block(node)
  match_property_in_resource?(:powershell_script, 'code', node) do |code_property|
    property_data = method_arg_ast_to_string(code_property)
    next unless property_data && property_data.match?(/^choco /i)
    add_offense(node, message: MSG, severity: :refactor)
  end

  match_property_in_resource?(:execute, 'command', node) do |code_property|
    property_data = method_arg_ast_to_string(code_property)
    next unless property_data && property_data.match?(/^choco /i)
    add_offense(node, message: MSG, severity: :refactor)
  end
end