Sha256: b5a2c8d1a4ddaae3247b096ee649affeba0f65fc52ff48bb69ab5033107f0d7f

Contents?: true

Size: 1.33 KB

Versions: 15

Compression:

Stored size: 1.33 KB

Contents

# frozen_string_literal: true

module Facter
  class InternalFactLoader
    attr_reader :facts

    def core_facts
      @facts.select { |fact| fact.type == :core }
    end

    def legacy_facts
      @facts.select { |fact| fact.type == :legacy }
    end

    def initialize(os_descendents = nil)
      @facts = []

      os_descendents ||= OsDetector.instance.hierarchy
      load_all_oses_in_descending_order(os_descendents)
    end

    private

    def load_all_oses_in_descending_order(os_descendents)
      os_descendents.reverse_each do |os|
        load_for_os(os)
      end
    end

    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
        next if @facts.any? { |fact| fact.name == fact_name }

        type = class_name.const_defined?('TYPE') ? class_name::TYPE : :core
        load_fact(fact_name, class_name, type)
        next unless class_name.const_defined?('ALIASES')

        [*class_name::ALIASES].each { |fact_alias| load_fact(fact_alias, class_name, :legacy) }
      end
    end

    def load_fact(fact_name, klass, type)
      loaded_fact = LoadedFact.new(fact_name, klass, type)
      @facts << loaded_fact
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
facter-4.0.36 lib/facter/framework/core/fact_loaders/internal_fact_loader.rb
facter-4.0.35 lib/facter/framework/core/fact_loaders/internal_fact_loader.rb
facter-4.0.34 lib/facter/framework/core/fact_loaders/internal_fact_loader.rb
facter-4.0.33 lib/facter/framework/core/fact_loaders/internal_fact_loader.rb
facter-4.0.32 lib/facter/framework/core/fact_loaders/internal_fact_loader.rb
facter-4.0.31 lib/facter/framework/core/fact_loaders/internal_fact_loader.rb
facter-4.0.30 lib/facter/framework/core/fact_loaders/internal_fact_loader.rb
facter-4.0.29 lib/framework/core/fact_loaders/internal_fact_loader.rb
facter-4.0.28 lib/framework/core/fact_loaders/internal_fact_loader.rb
facter-4.0.26 lib/framework/core/fact_loaders/internal_fact_loader.rb
facter-4.0.25 lib/framework/core/fact_loaders/internal_fact_loader.rb
facter-4.0.24 lib/framework/core/fact_loaders/internal_fact_loader.rb
facter-4.0.23 lib/framework/core/fact_loaders/internal_fact_loader.rb
facter-4.0.22 lib/framework/core/fact_loaders/internal_fact_loader.rb
facter-4.0.21 lib/framework/core/fact_loaders/internal_fact_loader.rb