summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJacob Helwig <jacob@puppetlabs.com>2011-04-12 11:15:06 -0700
committerJacob Helwig <jacob@puppetlabs.com>2011-04-12 11:15:06 -0700
commita75f0f9bc7ea1e03dc3a19fba8fae61165ab2b05 (patch)
tree75aa6acaf57de80e1f07b2e59b7c6f978501f709
parent6b97242d5ca2cc28cc11e6f253f76fda90255d7f (diff)
downloadfacter-a75f0f9bc7ea1e03dc3a19fba8fae61165ab2b05.tar.gz
facter-a75f0f9bc7ea1e03dc3a19fba8fae61165ab2b05.tar.xz
facter-a75f0f9bc7ea1e03dc3a19fba8fae61165ab2b05.zip
(#7039) Pre-load all facts when requesting a single fact
Since multiple facts can be defined in a single file and we have no way of knowing which "additional" facts are defined in which files, we pre-load all facts when we're looking for specific one. Paired-with: Max Martin <max@puppetlabs.com>
-rw-r--r--lib/facter/application.rb14
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/facter/application.rb b/lib/facter/application.rb
index 6b351b1..bd68149 100644
--- a/lib/facter/application.rb
+++ b/lib/facter/application.rb
@@ -9,19 +9,21 @@ module Facter
# Accept fact names to return from the command line
names = argv
- # Create the facts hash that is printed to standard out
- if names.empty?
- facts = Facter.to_hash
- else
+ # Create the facts hash that is printed to standard out.
+ # Pre-load all of the facts, since we can have multiple facts
+ # per file, and since we can't know ahead of time which file a
+ # fact will be in, we'll need to load every file.
+ facts = Facter.to_hash
+ unless names.empty?
facts = {}
- names.each { |name|
+ names.each do |name|
begin
facts[name] = Facter.value(name)
rescue => error
$stderr.puts "Could not retrieve #{name}: #{error}"
exit 10
end
- }
+ end
end
# Print the facts as YAML and exit