lib/facter/framework/config/config_reader.rb
# frozen_string_literal: true
module Facter
class ConfigReader
class << self
attr_accessor :conf
def init(config_path = nil)
config_path ||= default_path
refresh_config(config_path)
self
end
def block_list
@conf['facts'] && @conf['facts']['blocklist']
end
def ttls
@conf['facts'] && @conf['facts']['ttls']
end
def global
@conf['global']
end
def cli
@conf['cli']
end
def fact_groups
@conf['fact-groups']
end
def refresh_config(config_path)
@conf = File.readable?(config_path) ? Hocon.load(config_path) : {}
rescue StandardError => e
log.warn("Facter failed to read config file #{config_path} with the following error: #{e.message}")
@conf = {}
end
def clear
@conf = {}
end
private
def log
@log ||= Log.new(self)
end
def default_path
return '' if RUBY_PLATFORM == 'java'
os = OsDetector.instance.identifier
windows_path = File.join('C:', 'ProgramData', 'PuppetLabs', 'facter', 'etc', 'facter.conf')
linux_path = File.join('/', 'etc', 'puppetlabs', 'facter', 'facter.conf')
os == :windows ? windows_path : linux_path
end
end
end
end