def load(source)
@config = {:backends => ["yaml"],
:hierarchy => ["nodes/%{::trusted.certname}", "common"],
:merge_behavior => :native }
if source.is_a?(String)
if File.exist?(source)
config = begin
yaml_load_file(source)
rescue TypeError => detail
case detail.message
when /no implicit conversion from nil to integer/
false
else
raise detail
end
end
if config
version = config['version'] || config[:version] || 3
if version >= 4
raise "v#{version} hiera.yaml is only to be used inside an environment or a module and cannot be given to the global hiera"
end
@config.merge! config
end
else
raise "Config file #{source} not found"
end
elsif source.is_a?(Hash)
@config.merge! source
end
@config[:backends] = [ @config[:backends] ].flatten
if @config.include?(:logger)
Hiera.logger = @config[:logger].to_s
else
@config[:logger] = "console"
Hiera.logger = "console"
end
self.validate!
@config
end