29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/hako/jsonnet_loader.rb', line 29
def define_provider_functions(expand_variables, ask_keys)
Gem.loaded_specs.each do |gem_name, spec|
spec.require_paths.each do |path|
Dir.glob(File.join(spec.full_gem_path, path, 'hako/env_providers/*.rb')).each do |provider_path|
provider_name = File.basename(provider_path, '.rb')
provider_class = Loader.new(Hako::EnvProviders, 'hako/env_providers').load(provider_name)
Hako.logger.debug("Loaded #{provider_class} from '#{gem_name}' gem")
@vm.define_function("provide.#{provider_name}") do |options, name|
if expand_variables
provider_class.new(@root_path, JSON.parse(options)).ask([name]).fetch(name)
else
if ask_keys
provider = provider_class.new(@root_path, JSON.parse(options))
if provider.can_ask_keys?
if provider.ask_keys([name]).empty?
raise Error.new("Could not lookup #{name} from #{provider_name} provider with options=#{options}")
end
end
end
"${#{name}}"
end
end
end
end
end
end
|