Sha256: d11c8ed74073588c1241e3fdc228d3124f88b4df5152147cc8acdd4fc7e422ac

Contents?: true

Size: 1.51 KB

Versions: 6

Compression:

Stored size: 1.51 KB

Contents

# frozen_string_literal: true

module Facter
  module Resolvers
    class OsRelease < BaseResolver
      # :pretty_name
      # :name
      # :version_id
      # :version
      # :id
      # :id_like
      # :ansi_color
      # :home_url
      # :support_url
      # :bug_report_url

      @semaphore = Mutex.new
      @fact_list ||= {}

      class << self
        private

        def post_resolve(fact_name)
          @fact_list.fetch(fact_name) { read_os_release_file(fact_name) }
        end

        def read_os_release_file(fact_name)
          unless File.readable?('/etc/os-release')
            @fact_list[:name] = nil
            return
          end

          output = File.read('/etc/os-release')
          pairs = []

          output.each_line do |line|
            pairs << line.strip.delete('"').split('=', 2)
          end

          fill_fact_list(pairs)
          process_name

          @fact_list[fact_name]
        end

        def fill_fact_list(pairs)
          result = Hash[*pairs.flatten]
          result.each { |k, v| @fact_list[k.downcase.to_sym] = v }

          @fact_list[:identifier] = @fact_list[:id]
        end

        def process_name
          return unless @fact_list[:name]

          @fact_list[:name] = if @fact_list[:name].downcase.start_with?('red')
                                @fact_list[:name].split(' ')[0..1].join
                              else
                                @fact_list[:name].split(' ')[0].strip
                              end
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
facter-4.0.15 lib/resolvers/os_release_resolver.rb
facter-4.0.14 lib/resolvers/os_release_resolver.rb
facter-4.0.13 lib/resolvers/os_release_resolver.rb
facter-4.0.12 lib/resolvers/os_release_resolver.rb
facter-4.0.11 lib/resolvers/os_release_resolver.rb
facter-4.0.10.pre lib/resolvers/os_release_resolver.rb