class Inspec::Resources::PlatformResource
def [](key)
def [](key) # convert string to symbol key = key.to_sym if key.is_a? String return name if key == :name @platform[key] end
def arch
def arch @platform[:arch] end
def check_name(value)
def check_name(value) # allow wild card matching if value.include?("*") cleaned = Regexp.escape(value).gsub('\*', ".*?") name =~ /#{cleaned}/ else name == value end end
def check_release(value)
def check_release(value) # allow wild card matching if value.include?("*") cleaned = Regexp.escape(value).gsub('\*', ".*?") release =~ /#{cleaned}/ else release == value end end
def families
def families @platform[:family_hierarchy] end
def family
def family @platform[:family] end
def in_family?(family)
def in_family?(family) @platform.family_hierarchy.include?(family) end
def initialize
def initialize @platform = inspec.backend.platform end
def name
def name @platform[:name] end
def normalize(key) # TODO: dumb... push this up or remove need
def normalize(key) # TODO: dumb... push this up or remove need key.to_s.tr("-", "_").to_sym end
def params
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
def platform?(name)
def platform?(name) @platform.name == name || @platform.family_hierarchy.include?(name) end
def release
def release @platform[:release] end
def resource_id
def resource_id @platform.name || "platform" end
def supported?(supports)
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
def to_s
def to_s "Platform Detection" end