Manage which facts exist and how we access them. Largely just a wrapper around a hash of facts.
Return a fact object by name. If you use this, you still have to call 'value' on it to retrieve the actual value.
# File lib/facter/util/collection.rb, line 17 def [](name) value(name) end
Add a resolution mechanism for a named fact. This does not distinguish between adding a new fact and adding a new way to resolve a fact.
# File lib/facter/util/collection.rb, line 23 def add(name, options = {}, &block) name = canonize(name) unless fact = @facts[name] fact = Facter::Util::Fact.new(name) @facts[name] = fact end # Set any fact-appropriate options. options.each do |opt, value| method = opt.to_s + "=" if fact.respond_to?(method) fact.send(method, value) options.delete(opt) end end if block_given? resolve = fact.add(&block) else resolve = fact.add end # Set any resolve-appropriate options if resolve # If the resolve was actually added, set any resolve-appropriate options options.each do |opt, value| method = opt.to_s + "=" if resolve.respond_to?(method) resolve.send(method, value) options.delete(opt) end end end unless options.empty? raise ArgumentError, "Invalid facter option(s) %s" % options.keys.collect { |k| k.to_s }.join(",") end return fact end
Iterate across all of the facts.
# File lib/facter/util/collection.rb, line 69 def each load_all @facts.each do |name, fact| value = fact.value unless value.nil? yield name.to_s, value end end end
# File lib/facter/util/collection.rb, line 122 def external_loader @external_loader end
Return a fact by name.
# File lib/facter/util/collection.rb, line 80 def fact(name) name = canonize(name) # Try to load the fact if necessary load(name) unless @facts[name] # Try HARDER internal_loader.load_all unless @facts[name] if @facts.empty? Facter.warnonce("No facts loaded from #{internal_loader.search_path.join(File::PATH_SEPARATOR)}") end @facts[name] end
Flush all cached values.
# File lib/facter/util/collection.rb, line 97 def flush @facts.each { |name, fact| fact.flush } end
# File lib/facter/util/collection.rb, line 118 def internal_loader @internal_loader end
Return a list of all of the facts.
# File lib/facter/util/collection.rb, line 102 def list load_all return @facts.keys end
# File lib/facter/util/collection.rb, line 107 def load(name) internal_loader.load(name) external_loader.load(self) end
Load all known facts.
# File lib/facter/util/collection.rb, line 113 def load_all internal_loader.load_all external_loader.load(self) end
Generated with the Darkfish Rdoc Generator 2.