Module: Genome::Builder

Defined in:
lib/genome/builder.rb

Class Method Summary collapse

Class Method Details

.evaluate_properties(properties) ⇒ Object



41
42
43
44
45
46
47
48
49
50
# File 'lib/genome/builder.rb', line 41

def self.evaluate_properties(properties)
  # TODO: convert classes and helper functions into appropriate properties
  processed_properties = {}

  properties.each do |properties_name, properties_value|
    processed_properties[properties_name] = evaluate_properties_value(properties_value)
  end

  processed_properties
end

.evaluate_properties_value(properties_value) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/genome/builder.rb', line 52

def self.evaluate_properties_value(properties_value)
    case properties_value
    when Array
      properties_value.map do |single_properties_value|
        evaluate_properties_value(single_properties_value)
      end
    when Genome::Reference
      { Ref: properties_value.reference_name }
    else
      properties_value
    end
end

.generate_document(metadata: {}, description: nil, resources: {}, parameters: {}, outputs: {}) ⇒ Object



30
31
32
33
34
35
36
37
38
39
# File 'lib/genome/builder.rb', line 30

def self.generate_document(metadata: {}, description: nil, resources: {}, parameters: {}, outputs: {})
  {
    AWSTemplateFormatVersion: Config.config[:AWSTemplateFormatVersion],
    Description: [Config::DESCRIPTION_PREFIX, description].compact.join(''),
    Metadata: ,
    Resources: resources,
    Parameters: parameters,
    Outputs: outputs
  }
end

.template(resource) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/genome/builder.rb', line 8

def self.template(resource)
  resources = {}

  resource.templates.each do |template_name, template|
    properties = evaluate_properties(template[:properties])

    dependencies = template[:dependencies]

    resource_template = template[:klass].new(template_name, properties, dependencies)

    resources.merge!(resource_template.to_h)
  end

  parameters = {}

  resource.parameters.each do |_parameter_name, parameter|
    parameters.merge!(parameter.to_h)
  end

  generate_document(resources: resources, parameters: parameters, description: resource.resource_description)
end