Sha256: a8eb8338fe650476cf39a221bf2bad1129e49ac4ac0077c5d3dd37ad67f5ea5e

Contents?: true

Size: 933 Bytes

Versions: 15

Compression:

Stored size: 933 Bytes

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?

    return @values.any? { |v| convert(v) === value }
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
facter-1.7.6 lib/facter/util/confine.rb
facter-1.7.5 lib/facter/util/confine.rb
facter-1.7.5.rc2 lib/facter/util/confine.rb
facter-1.7.5.rc1 lib/facter/util/confine.rb
facter-1.7.4 lib/facter/util/confine.rb
facter-1.7.4.rc1 lib/facter/util/confine.rb
facter-1.7.3 lib/facter/util/confine.rb
facter-1.7.3.rc1 lib/facter/util/confine.rb
facter-1.7.2 lib/facter/util/confine.rb
facter-1.7.2.rc1 lib/facter/util/confine.rb
facter-1.7.1 lib/facter/util/confine.rb
facter-1.7.1.rc1 lib/facter/util/confine.rb
facter-1.7.0 lib/facter/util/confine.rb
facter-1.7.0.rc2 lib/facter/util/confine.rb
facter-1.7.0.rc1 lib/facter/util/confine.rb