Sha256: ab1af4782a6a92cf2709744e46d66f4815486ddd31a23e65b7143d67a9cb0db0

Contents?: true

Size: 1.1 KB

Versions: 7

Compression:

Stored size: 1.1 KB

Contents

# A restricting tag for fact resolution mechanisms.  The tag must be true
# for the resolution mechanism to be suitable.

require 'facter/util/values'

class Facter::Util::Confine
    attr_accessor :fact, :values

    include Facter::Util::Values

    # Add the restriction.  Requires the fact name, an operator, and the value
    # we're comparing to.
    def initialize(fact, *values)
        raise ArgumentError, "The fact name must be provided" unless fact
        raise ArgumentError, "One or more values must be provided" if values.empty?
        @fact = fact
        @values = values
    end

    def to_s
        return "'%s' '%s'" % [@fact, @values.join(",")]
    end

    # Evaluate the fact, returning true or false.
    def true?
        unless fact = Facter[@fact]
            Facter.debug "No fact for %s" % @fact
            return false
        end
        value = convert(fact.value)

        return false if value.nil?

        @values.each do |v|
            v = convert(v)
            next unless v.class == value.class
            return true if value == v
        end
        return false
    end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
facter-1.6.1 lib/facter/util/confine.rb
facter-1.6.0 lib/facter/util/confine.rb
facter-1.5.9 lib/facter/util/confine.rb
facter-1.5.8 lib/facter/util/confine.rb
facter-1.5.7 lib/facter/util/confine.rb
facter-1.5.5 lib/facter/util/confine.rb
facter-1.5.6 lib/facter/util/confine.rb