class Facter::InternalFactLoader

Attributes

facts[R]

Public Class Methods

new(os_descendents = nil) click to toggle 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

core_facts() click to toggle source
# File lib/facter/framework/core/fact_loaders/internal_fact_loader.rb, line 7
def core_facts
  @facts.select { |fact| fact.type == :core }
end
legacy_facts() click to toggle 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

load_all_oses_in_descending_order(os_descendents) click to toggle 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
load_fact(fact_name, klass, type) click to toggle 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
load_for_os(operating_system) click to toggle 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