class Inspec::Resources::OneGetPackage
def info
def info return @info if defined?(@info) @info = {} @info[:type] = 'oneget' @info[:installed] = false cmd = inspec.command("Get-Package -Name '#{@package_name}' | ConvertTo-Json") # cannot rely on exit code for now, successful command returns exit code 1 # return nil if cmd.exit_status != 0 # try to parse json begin pkgs = JSON.parse(cmd.stdout) @info[:installed] = true # sometimes we get multiple values if pkgs.is_a?(Array) # select the first entry pkgs = pkgs.first end rescue JSON::ParserError => _e return @info end @info[:name] = pkgs['Name'] if pkgs.key?('Name') @info[:version] = pkgs['Version'] if pkgs.key?('Version') @info end
def initialize(package_name)
def initialize(package_name) @package_name = package_name # verify that this resource is only supported on Windows return skip_resource 'The `oneget` resource is not supported on your OS.' if !inspec.os.windows? end
def installed?
def installed? info[:installed] == true end
def to_s
def to_s "OneGet Package #{@package_name}" end
def version
def version info[:version] end