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

Inherits:
Object
  • Object
show all
Defined in:
lib/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.



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

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

Instance Attribute Details

#filenameObject (readonly)

Returns the value of attribute filename.



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

def filename
  @filename
end

Instance Method Details

#contentObject



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

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

#parse_executable_output(output) ⇒ Object



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

def parse_executable_output(output)
  res = nil
  begin
    res = YAML.safe_load output
  rescue Exception => 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)


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

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.



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

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