module Alki::Assembly::InstanceBuilder

Public Class Methods

build(executor, assembly,overrides,&instance_wrapper) click to toggle source
# File lib/alki/assembly/instance_builder.rb, line 11
def build(executor, assembly,overrides,&instance_wrapper)
  assembly = Alki.load(assembly)

  overrides = inject_assembly_instance overrides, instance_wrapper

  executor.root = Types.build :assembly, assembly.root, overrides.root
  executor.meta = IceNine.deep_freeze(assembly.meta.dup.append! overrides.meta)

  executor.call [:assembly_instance]
end

Private Class Methods

assembly_instance() click to toggle source
# File lib/alki/assembly/instance_builder.rb, line 31
def assembly_instance
  Types.build(:service,-> { root })
end
inject_assembly_instance(overrides,instance_wrapper) click to toggle source
# File lib/alki/assembly/instance_builder.rb, line 24
def inject_assembly_instance(overrides,instance_wrapper)
  root = overrides.root.dup
  root.children = root.children.merge(assembly_instance: assembly_instance)
  meta = wrap_assembly_instance(overrides.meta,instance_wrapper)
  Overrides.new(root,meta)
end
wrap_assembly_instance(meta,wrapper) click to toggle source
# File lib/alki/assembly/instance_builder.rb, line 35
def wrap_assembly_instance(meta,wrapper)
  meta.dup.add Meta::Overlay.new(
    :value,
    [:assembly_instance],
    wrapper,
    []
  )
end