Sha256: 8f3d8fccbc9a3ffd435d98d6cd6c7c16ec18ef0fa2e14b5b6e9fc39ef8ff1d4c
Contents?: true
Size: 1.63 KB
Versions: 1
Compression:
Stored size: 1.63 KB
Contents
class Kubes::Compiler::Strategy class Dispatcher < Base def dispatch result = render(@path) # main results = [result].flatten # ensure array data = results.map! do |main| hash = pre_layer.deeper_merge!(main) # need the ! or deep_merge returns original hash hash.deeper_merge!(post_layer) end Result.new(@save_file, data) end # Render via to Erb or one of the DSL syntax classes or Core/Blocks class def render(path) if path.include?('.rb') klass = dsl_class(path) # IE: Kubes::Compiler::Dsl::Syntax::Deployment or Kubes::Compiler::Dsl::Core::Blocks klass.new(@options.merge(path: path, data: @data)).run else Erb.new(@options.merge(data: @data)).render_result(path) end end # Must be defined here in case coming from Kubes::Compiler::Strategy::Erb#render def dsl_class(path) if block_form?(path) Kubes::Compiler::Dsl::Core::Blocks else syntax_class end end def syntax_class klass_name = normalize_kind(@save_file) # IE: @save_file: web/service.yaml "Kubes::Compiler::Dsl::Syntax::#{klass_name}".constantize rescue NameError logger.debug "Using default resource for: #{klass_name}" Kubes::Compiler::Dsl::Syntax::Resource # default end def block_form?(path) type = extract_type(path) type.pluralize == type end def pre_layer merge_layers(pre_layers) end def post_layer merge_layers(post_layers) end def merge_layers(layers) layers.inject({}) do |hash, layer| render(layer) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
kubes-0.7.0 | lib/kubes/compiler/strategy/dispatcher.rb |