Module: Genome::Builder
- Defined in:
- lib/genome/builder.rb
Class Method Summary collapse
- .evaluate_properties(properties) ⇒ Object
- .evaluate_properties_value(properties_value) ⇒ Object
- .generate_document(metadata: {}, description: nil, resources: {}, parameters: {}, outputs: {}) ⇒ Object
- .template(resource) ⇒ Object
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 |