Sha256: a8f6a1495d7d026db71a588683469fd64f9b47cfb73be43531d42b8bf4646017

Contents?: true

Size: 1.41 KB

Versions: 4

Compression:

Stored size: 1.41 KB

Contents

class Lono::Builder::Dsl::Finalizer
  class ParameterGroups < Base
    extend Memoist
    include Lono::Builder::Util::Stringify

    def initialize(options={})
      super
      @parameters = options[:parameters]
    end

    def run
      return @cfn if parameter_groups.empty?
      @cfn["Metadata"] ||= {}
      @cfn["Metadata"]["AWS::CloudFormation::Interface"] = stringify!(interface)
      @cfn
    end

    def interface
      interface = {}
      parameter_groups.each do |group_label, parameters|
        group = {
          Label: { default: group_label},
          Parameters: parameters,
        }
        interface[:ParameterGroups] ||= []
        interface[:ParameterGroups] << group
      end
      parameter_labels.each do |name, label|
        l = { name => { default: label } }
        interface[:ParameterLabels] ||= {}
        interface[:ParameterLabels].merge!(l)
      end
      interface
    end

    def parameter_groups
      parameter_groups = {}
      @parameters.each do |p|
        next unless p.group_label
        parameter_groups[p.group_label] ||= []
        parameter_groups[p.group_label] << p.name
      end
      parameter_groups
    end
    memoize :parameter_groups

    def parameter_labels
      parameter_labels = {}
      @parameters.each do |p|
        next unless p.label
        parameter_labels[p.name] = p.label
      end
      parameter_labels
    end
    memoize :parameter_labels
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
lono-8.0.0.pre.rc6 lib/lono/builder/dsl/finalizer/parameter_groups.rb
lono-8.0.0.pre.rc5 lib/lono/builder/dsl/finalizer/parameter_groups.rb
lono-8.0.0.pre.rc4 lib/lono/builder/dsl/finalizer/parameter_groups.rb
lono-8.0.0.pre.rc3 lib/lono/builder/dsl/finalizer/parameter_groups.rb