Sha256: 028728b4218cf8eec80bbe343f7d139059ca31699a87496d76f80812a3d6ac6d

Contents?: true

Size: 1.27 KB

Versions: 15

Compression:

Stored size: 1.27 KB

Contents

# frozen_string_literal: true

module Facter
  # Filter inside value of a fact.
  # e.g. os.release.major is the user query, os.release is the fact
  # and major is the filter criteria inside tha fact
  class FactFilter
    def filter_facts!(searched_facts)
      filter_legacy_facts!(searched_facts)
      filter_blocked_legacy_facts!(searched_facts)

      searched_facts.each do |fact|
        fact.value = if fact.filter_tokens.any? && fact.value.respond_to?(:dig)
                       fact.value.dig(*fact.filter_tokens)
                     else
                       fact.value
                     end
      end
    end

    private

    # This will filter out the legacy facts that should be blocked. Because some legacy facts are just aliases
    # to the core ones, even if they are blocked, facter will resolved them but they won't be displayed.

    def filter_blocked_legacy_facts!(facts)
      blocked_facts = Options[:blocked_facts] || []

      facts.reject! do |fact|
        blocked_facts.select { |blocked_fact| fact.name.match(/^#{blocked_fact}/) && fact.type == :legacy }.any?
      end
    end

    def filter_legacy_facts!(resolved_facts)
      return unless !Options[:show_legacy] && Options[:user_query].empty?

      resolved_facts.reject!(&:legacy?)
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
facter-4.0.51 lib/facter/framework/core/fact_filter.rb
facter-4.0.50 lib/facter/framework/core/fact_filter.rb
facter-4.0.49 lib/facter/framework/core/fact_filter.rb
facter-4.0.48 lib/facter/framework/core/fact_filter.rb
facter-4.0.47 lib/facter/framework/core/fact_filter.rb
facter-4.0.46 lib/facter/framework/core/fact_filter.rb
facter-4.0.44 lib/facter/framework/core/fact_filter.rb
facter-4.0.43 lib/facter/framework/core/fact_filter.rb
facter-4.0.42 lib/facter/framework/core/fact_filter.rb
facter-4.0.41 lib/facter/framework/core/fact_filter.rb
facter-4.0.40 lib/facter/framework/core/fact_filter.rb
facter-4.0.39 lib/facter/framework/core/fact_filter.rb
facter-4.0.38 lib/facter/framework/core/fact_filter.rb
facter-4.0.37 lib/facter/framework/core/fact_filter.rb
facter-4.0.36 lib/facter/framework/core/fact_filter.rb