def self.run(argv)
require 'optparse'
require 'facter'
options = parse(argv)
names = argv
unless names.empty?
facts = {}
names.each do |name|
begin
facts[name] = Facter.value(name)
rescue => error
$stderr.puts "Could not retrieve #{name}: #{error}"
exit 10
end
end
end
facts ||= Facter.to_hash
if options[:yaml]
require 'yaml'
puts YAML.dump(facts)
exit(0)
end
if options[:json]
begin
require 'rubygems'
require 'json'
puts JSON.dump(facts)
exit(0)
rescue LoadError
$stderr.puts "You do not have JSON support in your version of Ruby. JSON output disabled"
exit(1)
end
end
if facts.length == 1
if value = facts.values.first
puts value
end
else
facts.sort_by{ |fact| fact.first }.each do |name,value|
puts "#{name} => #{value}"
end
end
rescue => e
if options && options[:trace]
raise e
else
$stderr.puts "Error: #{e}"
exit(12)
end
end