lib/facter/util/loader.rb in facter-1.6.1 vs lib/facter/util/loader.rb in facter-1.6.2

- old
+ new

@@ -1,112 +1,112 @@ require 'facter' # Load facts on demand. class Facter::Util::Loader - def initialize - @loaded = [] - end + def initialize + @loaded = [] + end - # Load all resolutions for a single fact. - def load(fact) - # Now load from the search path - shortname = fact.to_s.downcase - load_env(shortname) + # Load all resolutions for a single fact. + def load(fact) + # Now load from the search path + shortname = fact.to_s.downcase + load_env(shortname) - filename = shortname + ".rb" - search_path.each do |dir| - # Load individual files - file = File.join(dir, filename) + filename = shortname + ".rb" + search_path.each do |dir| + # Load individual files + file = File.join(dir, filename) - load_file(file) if FileTest.exist?(file) + load_file(file) if FileTest.exist?(file) - # And load any directories matching the name - factdir = File.join(dir, shortname) - load_dir(factdir) if FileTest.directory?(factdir) - end + # And load any directories matching the name + factdir = File.join(dir, shortname) + load_dir(factdir) if FileTest.directory?(factdir) end + end - # Load all facts from all directories. - def load_all - return if defined?(@loaded_all) + # Load all facts from all directories. + def load_all + return if defined?(@loaded_all) - load_env + load_env - search_path.each do |dir| - next unless FileTest.directory?(dir) + search_path.each do |dir| + next unless FileTest.directory?(dir) - Dir.entries(dir).sort.each do |file| - path = File.join(dir, file) - if File.directory?(path) - load_dir(path) - elsif file =~ /\.rb$/ - load_file(File.join(dir, file)) - end - end + Dir.entries(dir).sort.each do |file| + path = File.join(dir, file) + if File.directory?(path) + load_dir(path) + elsif file =~ /\.rb$/ + load_file(File.join(dir, file)) end - - @loaded_all = true + end end - # The list of directories we're going to search through for facts. - def search_path - result = [] - result += $LOAD_PATH.collect { |d| File.join(d, "facter") } - if ENV.include?("FACTERLIB") - result += ENV["FACTERLIB"].split(":") - end + @loaded_all = true + end - # This allows others to register additional paths we should search. - result += Facter.search_path - - result + # The list of directories we're going to search through for facts. + def search_path + result = [] + result += $LOAD_PATH.collect { |d| File.join(d, "facter") } + if ENV.include?("FACTERLIB") + result += ENV["FACTERLIB"].split(":") end - private + # This allows others to register additional paths we should search. + result += Facter.search_path - def load_dir(dir) - return if dir =~ /\/\.+$/ or dir =~ /\/util$/ or dir =~ /\/lib$/ + result + end - Dir.entries(dir).find_all { |f| f =~ /\.rb$/ }.sort.each do |file| - load_file(File.join(dir, file)) - end + private + + def load_dir(dir) + return if dir =~ /\/\.+$/ or dir =~ /\/util$/ or dir =~ /\/lib$/ + + Dir.entries(dir).find_all { |f| f =~ /\.rb$/ }.sort.each do |file| + load_file(File.join(dir, file)) end + end - def load_file(file) - return if @loaded.include? file - # We have to specify Kernel.load, because we have a load method. - begin - # Store the file path so we don't try to reload it - @loaded << file - Kernel.load(file) - rescue ScriptError => detail - # Don't store the path if the file can't be loaded - # in case it's loadable later on. - @loaded.delete(file) - warn "Error loading fact #{file} #{detail}" - end + def load_file(file) + return if @loaded.include? file + # We have to specify Kernel.load, because we have a load method. + begin + # Store the file path so we don't try to reload it + @loaded << file + Kernel.load(file) + rescue ScriptError => detail + # Don't store the path if the file can't be loaded + # in case it's loadable later on. + @loaded.delete(file) + warn "Error loading fact #{file} #{detail}" end + end - # Load facts from the environment. If no name is provided, - # all will be loaded. - def load_env(fact = nil) - # Load from the environment, if possible - ENV.each do |name, value| - # Skip anything that doesn't match our regex. - next unless name =~ /^facter_?(\w+)$/i - env_name = $1 + # Load facts from the environment. If no name is provided, + # all will be loaded. + def load_env(fact = nil) + # Load from the environment, if possible + ENV.each do |name, value| + # Skip anything that doesn't match our regex. + next unless name =~ /^facter_?(\w+)$/i + env_name = $1 - # If a fact name was specified, skip anything that doesn't - # match it. - next if fact and env_name != fact + # If a fact name was specified, skip anything that doesn't + # match it. + next if fact and env_name != fact - Facter.add($1) do - has_weight 1_000_000 - setcode { value } - end + Facter.add($1) do + has_weight 1_000_000 + setcode { value } + end - # Short-cut, if we are only looking for one value. - break if fact - end + # Short-cut, if we are only looking for one value. + break if fact end + end end