class Inspec::Resources::PlatformResource

Public Class Methods

new() click to toggle source
# File lib/inspec/resources/platform.rb, line 17
def initialize
  @platform = inspec.backend.platform
end

Public Instance Methods

[](key) click to toggle source
# File lib/inspec/resources/platform.rb, line 41
def [](key)
  # convert string to symbol
  key = key.to_sym if key.is_a? String
  return name if key == :name

  @platform[key]
end
arch() click to toggle source
# File lib/inspec/resources/platform.rb, line 29
def arch
  @platform[:arch]
end
families() click to toggle source
# File lib/inspec/resources/platform.rb, line 33
def families
  @platform[:family_hierarchy]
end
family() click to toggle source
# File lib/inspec/resources/platform.rb, line 21
def family
  @platform[:family]
end
in_family?(family) click to toggle source
# File lib/inspec/resources/platform.rb, line 54
def in_family?(family)
  @platform.family_hierarchy.include?(family)
end
name() click to toggle source
# File lib/inspec/resources/platform.rb, line 37
def name
  @platform[:name]
end
normalize(key) click to toggle source
# File lib/inspec/resources/platform.rb, line 92
def normalize(key) # TODO: dumb... push this up or remove need
  key.to_s.tr("-", "_").to_sym
end
params() click to toggle source
# File lib/inspec/resources/platform.rb, line 58
def params
  # rubocop:disable Layout/AlignHash
  h = {
    name:     name,
    families: families,
    release:  release,
    arch:     arch,
  }
  # rubocop:enable Layout/AlignHash

  h.delete :arch if in_family?("api") # not applicable if api

  h
end
platform?(name) click to toggle source
# File lib/inspec/resources/platform.rb, line 49
def platform?(name)
  @platform.name == name ||
    @platform.family_hierarchy.include?(name)
end
release() click to toggle source
# File lib/inspec/resources/platform.rb, line 25
def release
  @platform[:release]
end
supported?(supports) click to toggle source
# File lib/inspec/resources/platform.rb, line 73
def supported?(supports)
  raise ArgumentError, "`supports` is nil." unless supports

  supports.any? { |support|
    support.all? { |k, v|
      case normalize(k)
      when :os_family, :platform_family then
        in_family?(v)
      when :os, :platform then
        platform?(v)
      when :os_name, :platform_name then
        check_name(v)
      when :release then
        check_release(v)
      end
    }
  } || supports.empty?
end
to_s() click to toggle source
# File lib/inspec/resources/platform.rb, line 96
def to_s
  "Platform Detection"
end

Private Instance Methods

check_name(value) click to toggle source
# File lib/inspec/resources/platform.rb, line 102
def check_name(value)
  # allow wild card matching
  if value.include?("*")
    cleaned = Regexp.escape(value).gsub('\*', ".*?")
    name =~ /#{cleaned}/
  else
    name == value
  end
end
check_release(value) click to toggle source
# File lib/inspec/resources/platform.rb, line 112
def check_release(value)
  # allow wild card matching
  if value.include?("*")
    cleaned = Regexp.escape(value).gsub('\*', ".*?")
    release =~ /#{cleaned}/
  else
    release == value
  end
end