Class: Hako::JsonnetLoader
- Inherits:
-
Object
- Object
- Hako::JsonnetLoader
- Defined in:
- lib/hako/jsonnet_loader.rb
Instance Method Summary collapse
- #define_provider_functions(expand_variables, ask_keys) ⇒ Object private
-
#initialize(application, expand_variables:, ask_keys:) ⇒ JsonnetLoader
constructor
A new instance of JsonnetLoader.
- #load(path) ⇒ Object
Constructor Details
#initialize(application, expand_variables:, ask_keys:) ⇒ JsonnetLoader
Returns a new instance of JsonnetLoader.
15 16 17 18 19 20 |
# File 'lib/hako/jsonnet_loader.rb', line 15 def initialize(application, expand_variables:, ask_keys:) @vm = Jsonnet::VM.new @root_path = application.root_path define_provider_functions(, ask_keys) @vm.ext_var('appId', application.id) end |
Instance Method Details
#define_provider_functions(expand_variables, ask_keys) ⇒ Object (private)
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(, 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 |, name| if provider_class.new(@root_path, JSON.parse()).ask([name]).fetch(name) else if ask_keys provider = provider_class.new(@root_path, JSON.parse()) if provider.can_ask_keys? if provider.ask_keys([name]).empty? raise Error.new("Could not lookup #{name} from #{provider_name} provider with options=#{}") end end end "${#{name}}" end end end end end end |
#load(path) ⇒ Object
23 24 25 |
# File 'lib/hako/jsonnet_loader.rb', line 23 def load(path) JSON.parse(@vm.evaluate_file(path.to_s)) end |