module Caco::Facter::ClassMethods

Public Instance Methods

call(*items) click to toggle source
# File lib/caco/facter.rb, line 20
def call(*items)
  value = json_data(*items).dig(*items)
  raise KeyNotFoundError.new("#{items.join(":")} not found") unless value
  value
end
set_fake_data=(data) click to toggle source
# File lib/caco/facter.rb, line 7
def set_fake_data=(data)
  @@fake_data = data
end
use_fake(data) { || ... } click to toggle source
# File lib/caco/facter.rb, line 11
def use_fake(data, &block)
  old_fake_data = @@fake_data
  @@fake_data = data

  yield

  @@fake_data = old_fake_data
end

Private Instance Methods

external_facter_data() click to toggle source
# File lib/caco/facter.rb, line 33
def external_facter_data
  facter_path = Caco::Executer.(command: "which facter")[:output].chomp!
  result = Caco::Executer.(command: "#{facter_path} -j")
  result[:output]
end
json_data(*items) click to toggle source
# File lib/caco/facter.rb, line 27
def json_data(*items)
  return @@fake_data unless @@fake_data.nil?

  @@parsed_data ||= JSON.parse(external_facter_data)
end