From 1fa87a9c1ed9f9a841936615d27c61dc1d2d7fce Mon Sep 17 00:00:00 2001 From: "John E. Vincent" Date: Thu, 4 Nov 2010 00:07:06 -0400 Subject: JSON support. Works in 1.9.1. Warnings in 1.9.2. LoadError on 1.8.7 for some reason --- bin/facter | 5 ++++- lib/facter/application.rb | 13 +++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/bin/facter b/bin/facter index 9d3b49c..622d72e 100755 --- a/bin/facter +++ b/bin/facter @@ -6,7 +6,7 @@ # # = Usage # -# facter [-d|--debug] [-h|--help] [-p|--puppet] [-v|--version] [-y|--yaml] [fact] [fact] [...] +# facter [-d|--debug] [-h|--help] [-p|--puppet] [-v|--version] [-y|--yaml] [-j|--json] [fact] [fact] [...] # # = Description # @@ -21,6 +21,9 @@ # yaml:: # Emit facts in YAML format. # +# json:: +# Emit facts in JSON format. +# # puppet:: # Load the Puppet libraries, thus allowing Facter to load Puppet-specific facts. # diff --git a/lib/facter/application.rb b/lib/facter/application.rb index 9de9249..9d6bc34 100644 --- a/lib/facter/application.rb +++ b/lib/facter/application.rb @@ -31,6 +31,18 @@ module Facter exit(0) end + # Print the facts as JSON and exit + if options[:json] + begin + 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 + # Print the value of a single fact, otherwise print a list sorted by fact # name and separated by "=>" if facts.length == 1 @@ -58,6 +70,7 @@ module Facter options = {} OptionParser.new do |opts| opts.on("-y", "--yaml") { |v| options[:yaml] = v } + opts.on("-j", "--json") { |v| options[:json] = v } opts.on( "--trace") { |v| options[:trace] = v } opts.on("-d", "--debug") { |v| Facter.debugging(1) } opts.on("-t", "--timing") { |v| Facter.timing(1) } -- cgit