class Facter::InternalFactLoader
Attributes
Public Class Methods
Source
# File lib/facter/framework/core/fact_loaders/internal_fact_loader.rb, line 15 def initialize(os_descendents = nil) @facts = [] os_descendents ||= OsDetector.instance.hierarchy load_all_oses_in_descending_order(os_descendents) end
Public Instance Methods
Source
# File lib/facter/framework/core/fact_loaders/internal_fact_loader.rb, line 7 def core_facts @facts.select { |fact| fact.type == :core } end
Source
# File lib/facter/framework/core/fact_loaders/internal_fact_loader.rb, line 11 def legacy_facts @facts.select { |fact| fact.type == :legacy } end
Private Instance Methods
Source
# File lib/facter/framework/core/fact_loaders/internal_fact_loader.rb, line 24 def load_all_oses_in_descending_order(os_descendents) os_descendents.reverse_each do |os| load_for_os(os) end end
Source
# File lib/facter/framework/core/fact_loaders/internal_fact_loader.rb, line 48 def load_fact(fact_name, klass, type) loaded_fact = LoadedFact.new(fact_name, klass, type) @facts << loaded_fact end
Source
# File lib/facter/framework/core/fact_loaders/internal_fact_loader.rb, line 30 def load_for_os(operating_system) # select only classes classes = ClassDiscoverer.instance.discover_classes(operating_system) classes.each do |class_name| fact_name = class_name::FACT_NAME # if fact is already loaded, skip it unless @facts.any? { |fact| fact.name == fact_name } type = class_name.const_defined?('TYPE') ? class_name::TYPE : :core load_fact(fact_name, class_name, type) end next unless class_name.const_defined?('ALIASES') [*class_name::ALIASES].each do |fact_alias| load_fact(fact_alias, class_name, :legacy) unless @facts.any? { |fact| fact.name == fact_alias } end end end