class Inspec::Resources::ChocoPkg
Attributes
package_name[R]
Public Class Methods
new(package_name, _opts = {})
click to toggle source
# File lib/inspec/resources/chocolatey_package.rb, line 21 def initialize(package_name, _opts = {}) raise "Chocolatey is not installed" unless inspec.command("choco").exist? @package_name = package_name @cache = base_data.update(generate_cache) end
Public Instance Methods
info()
click to toggle source
# File lib/inspec/resources/chocolatey_package.rb, line 32 def info @cache.dup end
installed?()
click to toggle source
# File lib/inspec/resources/chocolatey_package.rb, line 28 def installed? @cache[:installed] end
method_missing(method_name, *args, &block)
click to toggle source
Calls superclass method
# File lib/inspec/resources/chocolatey_package.rb, line 40 def method_missing(method_name, *args, &block) if @cache.key?(method_name) @cache.fetch(method_name) else super end end
respond_to_missing?(method_name, *)
click to toggle source
Calls superclass method
# File lib/inspec/resources/chocolatey_package.rb, line 36 def respond_to_missing?(method_name, *) @cache.key?(method_name) || super end
to_s()
click to toggle source
# File lib/inspec/resources/chocolatey_package.rb, line 48 def to_s "Chocolatey package #{package_name}" end
Private Instance Methods
base_data()
click to toggle source
# File lib/inspec/resources/chocolatey_package.rb, line 54 def base_data { name: package_name, version: nil, installed: false, type: "chocolatey", } end
generate_cache()
click to toggle source
# File lib/inspec/resources/chocolatey_package.rb, line 63 def generate_cache command = <<-EOH (choco list --local-only --exact --include-programs --limit-output '#{package_name.gsub("'", "\`'")}') -Replace "\\|", "=" | ConvertFrom-StringData | ConvertTo-JSON EOH cmd = inspec.powershell(command.strip) return {} if cmd.exit_status != 0 || cmd.stdout.strip.empty? out = JSON.parse(cmd.stdout) { version: out.fetch(package_name), installed: true, } rescue JSON::ParserError, KeyError {} end