class Facter::Resolvers::OsRelease

Private Class Methods

append_linux_to_os_name() click to toggle source
# File lib/facter/resolvers/os_release.rb, line 98
def append_linux_to_os_name
  os_name = @fact_list[:name]
  @fact_list[:name] = os_name + 'Linux' if os_name.downcase.start_with?('virtuozzo')
end
capitalize_os_name() click to toggle source
# File lib/facter/resolvers/os_release.rb, line 93
def capitalize_os_name
  os_name = @fact_list[:name]
  @fact_list[:name] = os_name.capitalize if os_name.downcase.start_with?('arch', 'manjaro')
end
fill_fact_list(pairs) click to toggle source
# File lib/facter/resolvers/os_release.rb, line 58
def fill_fact_list(pairs)
  result = Hash[*pairs.flatten]
  result.each { |k, v| @fact_list[k.downcase.to_sym] = v }
end
join_os_name() click to toggle source
# File lib/facter/resolvers/os_release.rb, line 83
def join_os_name
  os_name = @fact_list[:name]
  @fact_list[:name] = if os_name.downcase.start_with?('red', 'oracle', 'arch', 'manjaro')
                        os_name = os_name.split(' ')[0..1].join
                        os_name
                      else
                        os_name.split(' ')[0].strip
                      end
end
post_resolve(fact_name, _options) click to toggle source
# File lib/facter/resolvers/os_release.rb, line 22
def post_resolve(fact_name, _options)
  @fact_list.fetch(fact_name) do
    # If we get here multiple times per run it's probably because
    # someone's asking for a os-release value not present in the file
    # (e.g. VERSION is not a thing on rolling distributions, so this
    # code will always run if the resolver is being asked for :version,
    # because it'll never get cached).
    #
    # Just return early to avoid reparsing the file.
    return unless @fact_list.empty?

    pairs = read_and_parse_os_release_file
    return unless pairs

    fill_fact_list(pairs)

    process_name
    process_version_id
    process_id

    @fact_list[fact_name]
  end
end
process_id() click to toggle source
# File lib/facter/resolvers/os_release.rb, line 69
def process_id
  return unless @fact_list[:id]

  @fact_list[:id] = 'opensuse' if @fact_list[:id] =~ /opensuse/i
end
process_name() click to toggle source
# File lib/facter/resolvers/os_release.rb, line 75
def process_name
  return unless @fact_list[:name]

  join_os_name
  capitalize_os_name
  append_linux_to_os_name
end
process_version_id() click to toggle source
# File lib/facter/resolvers/os_release.rb, line 63
def process_version_id
  return unless @fact_list[:version_id]

  @fact_list[:version_id] = "#{@fact_list[:version_id]}.0" unless @fact_list[:version_id] =~ /\./
end
read_and_parse_os_release_file() click to toggle source
# File lib/facter/resolvers/os_release.rb, line 46
def read_and_parse_os_release_file
  content = Facter::Util::FileHelper.safe_readlines('/etc/os-release')
  return nil if content.empty?

  pairs = []
  content.each do |line|
    pairs << line.strip.delete('"').split('=', 2)
  end

  pairs
end