class Inspec::Resources::Package
Public Class Methods
new(package_name, opts = {})
click to toggle source
# File lib/inspec/resources/package.rb, line 23 def initialize(package_name, opts = {}) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity @package_name = package_name @name = @package_name @cache = nil # select package manager @pkgman = nil os = inspec.os if os.debian? @pkgman = Deb.new(inspec) elsif os.redhat? || %w{suse amazon fedora}.include?(os[:family]) @pkgman = Rpm.new(inspec, opts) elsif ["arch"].include?(os[:name]) @pkgman = Pacman.new(inspec) elsif ["darwin"].include?(os[:family]) @pkgman = Brew.new(inspec) elsif os.windows? @pkgman = WindowsPkg.new(inspec) elsif ["aix"].include?(os[:family]) @pkgman = BffPkg.new(inspec) elsif os.solaris? @pkgman = SolarisPkg.new(inspec) elsif ["hpux"].include?(os[:family]) @pkgman = HpuxPkg.new(inspec) elsif ["alpine"].include?(os[:name]) @pkgman = AlpinePkg.new(inspec) elsif ["freebsd"].include?(os[:name]) @pkgman = FreebsdPkg.new(inspec) else raise Inspec::Exceptions::ResourceSkipped, "The `package` resource is not supported on your OS yet." end evaluate_missing_requirements end
Public Instance Methods
held?(_provider = nil, _version = nil)
click to toggle source
returns true it the package is held (if the OS supports it)
# File lib/inspec/resources/package.rb, line 64 def held?(_provider = nil, _version = nil) info[:held] == true end
info()
click to toggle source
returns the package description
# File lib/inspec/resources/package.rb, line 69 def info return @cache unless @cache.nil? # All `@pkgman.info` methods return `{}`. This matches that # behavior if `@pkgman` can't be determined, thus avoiding the # `undefined method 'info' for nil:NilClass` error return {} if @pkgman.nil? @pkgman.info(@package_name) end
installed?(_provider = nil, _version = nil)
click to toggle source
returns true if the package is installed
# File lib/inspec/resources/package.rb, line 59 def installed?(_provider = nil, _version = nil) info[:installed] == true end
to_s()
click to toggle source
# File lib/inspec/resources/package.rb, line 85 def to_s "System Package #{@package_name}" end
version()
click to toggle source
return the package version
# File lib/inspec/resources/package.rb, line 80 def version info = @pkgman.info(@package_name) info[:version] end
Private Instance Methods
evaluate_missing_requirements()
click to toggle source
# File lib/inspec/resources/package.rb, line 91 def evaluate_missing_requirements missing_requirements_string = @pkgman.missing_requirements.uniq.join(", ") return if missing_requirements_string.empty? raise Inspec::Exceptions::ResourceSkipped, "The following requirements are not met for this resource: #{missing_requirements_string}" end