Class: LegacyFacter::Util::Parser::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/facter/custom_facts/util/parser.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(filename, content = nil) ⇒ Base

Returns a new instance of Base.



46
47
48
49
# File 'lib/facter/custom_facts/util/parser.rb', line 46

def initialize(filename, content = nil)
  @filename = filename
  @content  = content
end

Instance Attribute Details

#filenameObject (readonly)

Returns the value of attribute filename.



44
45
46
# File 'lib/facter/custom_facts/util/parser.rb', line 44

def filename
  @filename
end

Instance Method Details

#contentObject



51
52
53
# File 'lib/facter/custom_facts/util/parser.rb', line 51

def content
  @content ||= Facter::Util::FileHelper.safe_read(filename, nil)
end

#parse_executable_output(output) ⇒ Object



68
69
70
71
72
73
74
75
76
77
# File 'lib/facter/custom_facts/util/parser.rb', line 68

def parse_executable_output(output)
  res = nil
  begin
    res = YAML.safe_load(output, [Symbol, Time])
  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_resultsObject

Raises:

  • (ArgumentError)


64
65
66
# File 'lib/facter/custom_facts/util/parser.rb', line 64

def parse_results
  raise ArgumentError, 'Subclasses must respond to parse_results'
end

#resultsObject

results on the base class is really meant to be just an exception handler wrapper.



57
58
59
60
61
62
# File 'lib/facter/custom_facts/util/parser.rb', line 57

def results
  parse_results
rescue StandardError => e
  Facter.log_exception(e, "Failed to handle #{filename} as #{self.class} facts: #{e.message}")
  nil
end