Class: Jets::Stack::Builder

Inherits:
Object
  • Object
show all
Extended by:
Memoist
Includes:
Util::Camelize
Defined in:
lib/jets/stack/builder.rb

Instance Method Summary collapse

Methods included from Util::Camelize

#camelize

Constructor Details

#initialize(stack) ⇒ Builder

Returns a new instance of Builder.



6
7
8
9
# File 'lib/jets/stack/builder.rb', line 6

def initialize(stack)
  @stack = stack
  @template = {} # will build this structure up
end

Instance Method Details

#build_elements(section) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/jets/stack/builder.rb', line 29

def build_elements(section)
  # s is a "section element".  Examples:
  #
  #   Jets::Stack::Parameter
  #   Jets::Stack::Resource
  #   Jets::Stack::Output
  #
  section_elements = @stack.send(section)
  return unless section_elements

  section_elements.inject({}) do |template_section, s|
    template_section.merge(s.template)
  end
end

#build_section(section) ⇒ Object



19
20
21
22
23
24
25
26
27
# File 'lib/jets/stack/builder.rb', line 19

def build_section(section)
  elements = build_elements(section)
  return unless elements

  if section == :parameters
    elements[:GemLayer] = {Type: "String"} if Jets.gem_layer?
  end
  @template[section] = elements
end

#templateObject



11
12
13
14
15
16
# File 'lib/jets/stack/builder.rb', line 11

def template
  build_section(:parameters)
  build_section(:resources)
  build_section(:outputs)
  camelize(@template).deep_stringify_keys
end