Sha256: 801ce9eabf8ce9bbd94ee728f7e1c15ad65e34e3b19cc9f7283a95807da940b9

Contents?: true

Size: 1.02 KB

Versions: 11

Compression:

Stored size: 1.02 KB

Contents

class Jets::Stack
  class Builder
    extend Memoist
    include Jets::Util::Camelize

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

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

    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

    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
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
jets-5.0.13 lib/jets/stack/builder.rb
jets-5.0.12 lib/jets/stack/builder.rb
jets-5.0.11 lib/jets/stack/builder.rb
jets-5.0.10 lib/jets/stack/builder.rb
jets-5.0.9 lib/jets/stack/builder.rb
jets-5.0.8 lib/jets/stack/builder.rb
jets-5.0.7 lib/jets/stack/builder.rb
jets-5.0.6 lib/jets/stack/builder.rb
jets-5.0.5 lib/jets/stack/builder.rb
jets-5.0.4 lib/jets/stack/builder.rb
jets-5.0.3 lib/jets/stack/builder.rb