class EcsDeployCli::DSL::Parser

Public Class Methods

load(file) click to toggle source
# File lib/ecs_deploy_cli/dsl/parser.rb, line 68
def self.load(file)
  result = new
  result.instance_eval(File.read(file))
  result.ensure_required_params!
  result
end

Public Instance Methods

aws_profile_id(value) click to toggle source
# File lib/ecs_deploy_cli/dsl/parser.rb, line 6
def aws_profile_id(value)
  config[:aws_profile_id] = value
end
aws_region(value) click to toggle source
# File lib/ecs_deploy_cli/dsl/parser.rb, line 10
def aws_region(value)
  config[:aws_region] = value
end
cluster(name, &block) click to toggle source
# File lib/ecs_deploy_cli/dsl/parser.rb, line 43
def cluster(name, &block)
  config[:cluster] = name
  @cluster ||= {}.with_indifferent_access
  @cluster = Cluster.new(name, config)
  @cluster.instance_exec(&block) if block
end
config() click to toggle source
# File lib/ecs_deploy_cli/dsl/parser.rb, line 50
def config
  @config ||= {}
end
container(container, extends: nil, &block) click to toggle source
# File lib/ecs_deploy_cli/dsl/parser.rb, line 18
def container(container, extends: nil, &block)
  @containers ||= {}
  @containers[container] = Container.new(container, config)
  @containers[container].merge(@containers[extends]) if extends
  @containers[container].instance_exec(&block)
end
cron(name, &block) click to toggle source
# File lib/ecs_deploy_cli/dsl/parser.rb, line 37
def cron(name, &block)
  @crons ||= {}.with_indifferent_access
  @crons[name] = Cron.new(name, config)
  @crons[name].instance_exec(&block)
end
ensure_required_params!() click to toggle source
# File lib/ecs_deploy_cli/dsl/parser.rb, line 54
def ensure_required_params!
  [
    :aws_profile_id, :aws_region, :cluster
  ].each { |key| raise "Missing required parameter #{key}" unless config[key] }
end
resolve() click to toggle source
# File lib/ecs_deploy_cli/dsl/parser.rb, line 60
def resolve
  resolved_containers = (@containers || {}).transform_values(&:as_definition)
  resolved_tasks = (@tasks || {}).transform_values { |t| t.as_definition(resolved_containers) }
  resolved_crons = (@crons || {}).transform_values { |t| t.as_definition(resolved_tasks) }
  resolved_cluster = @cluster.as_definition
  [@services, resolved_tasks, resolved_crons, resolved_cluster]
end
service(name, &block) click to toggle source
# File lib/ecs_deploy_cli/dsl/parser.rb, line 31
def service(name, &block)
  @services ||= {}.with_indifferent_access
  @services[name.to_s] = Service.new(name, config)
  @services[name.to_s].instance_exec(&block)
end
stage(stage) click to toggle source
# File lib/ecs_deploy_cli/dsl/parser.rb, line 14
def stage(stage)
  config[:stage] = stage
end
task(task, &block) click to toggle source
# File lib/ecs_deploy_cli/dsl/parser.rb, line 25
def task(task, &block)
  @tasks ||= {}.with_indifferent_access
  @tasks[task] = Task.new(task, config)
  @tasks[task].instance_exec(&block)
end