class LegacyFacter::Util::Parser::Base
Attributes
filename[R]
Public Class Methods
new(filename, content = nil)
click to toggle source
# File lib/facter/custom_facts/util/parser.rb, line 48 def initialize(filename, content = nil) @filename = filename @content = content end
Public Instance Methods
content()
click to toggle source
# File lib/facter/custom_facts/util/parser.rb, line 53 def content @content ||= Facter::Util::FileHelper.safe_read(filename, nil) end
log_stderr(msg, command, file)
click to toggle source
# File lib/facter/custom_facts/util/parser.rb, line 85 def log_stderr(msg, command, file) return if !msg || msg.empty? file_name = file.split('/').last logger = Facter::Log.new(file_name) logger.warn(format(STDERR_MESSAGE, command, msg.strip)) end
parse_executable_output(output)
click to toggle source
# File lib/facter/custom_facts/util/parser.rb, line 70 def parse_executable_output(output) res = nil begin res = if Gem::Version.new(Psych::VERSION) >= Gem::Version.new('3.1.0') # Ruby 2.6+ YAML.safe_load(output, permitted_classes: [Symbol, Time]) else YAML.safe_load(output, [Symbol, Time]) end rescue StandardError => e Facter.debug("Could not parse executable fact output as YAML or JSON (#{e.message})") end res = KeyValuePairOutputFormat.parse output unless res.is_a?(Hash) res end
parse_results()
click to toggle source
# File lib/facter/custom_facts/util/parser.rb, line 66 def parse_results raise ArgumentError, 'Subclasses must respond to parse_results' end
results()
click to toggle source
results on the base class is really meant to be just an exception handler wrapper.
# File lib/facter/custom_facts/util/parser.rb, line 59 def results parse_results rescue StandardError => e Facter.log_exception(e, "Failed to handle #{filename} as #{self.class} facts: #{e.message}") nil end