class KY::DeployGeneration

Attributes

configuration[R]
deployment_yaml[R]
full_output_dir[R]
proc_commands[R]
project_name[R]

Public Class Methods

new(full_output_dir, project_name, configuration=Configuration.new) click to toggle source
# File lib/ky/deploy_generation.rb, line 3
def initialize(full_output_dir, project_name, configuration=Configuration.new)
  @configuration = configuration
  @proc_commands = File.read(configuration[:procfile_path]).split("\n")
                        .map {|line| line.split(':', 2) }
                        .map {|k, v| [k, ["/bin/bash","-c", v]] }
                        .to_h
  @full_output_dir = full_output_dir
  @project_name = project_name || configuration[:project_name]
  @deployment_yaml = read_deployment_yaml
end

Public Instance Methods

call() click to toggle source
# File lib/ky/deploy_generation.rb, line 14
def call
  to_h.each do |file_path, deploy_hash|
    File.write(file_path, deploy_hash.to_plain_yaml)
  end
end
to_h() click to toggle source
# File lib/ky/deploy_generation.rb, line 20
def to_h
  proc_commands.map do |id, command_array|
    ["#{full_output_dir}/#{id}.deployment.yml", template_hash(id, command_array)]
  end.to_h
end

Private Instance Methods

default_deployment_template() click to toggle source
# File lib/ky/deploy_generation.rb, line 38
def default_deployment_template
  "#{__dir__}/../../templates/deployment.yml"
end
deploy_merge(id) click to toggle source
# File lib/ky/deploy_generation.rb, line 53
def deploy_merge(id)
  return {} unless configuration[:merge]
  configuration[:merge][id].to_h
end
read_deployment_yaml() click to toggle source
# File lib/ky/deploy_generation.rb, line 30
def read_deployment_yaml
  if configuration['deployment']
    File.read(configuration['deployment'])
  else
    File.read(default_deployment_template)
  end
end
template_hash(id, command_array) click to toggle source
# File lib/ky/deploy_generation.rb, line 42
def template_hash(id, command_array)
  app_name =  configuration['app_name'] || "#{project_name}-#{id}"
  template_context = Template.new(configuration).context(app_name: app_name, id: id, command_array: command_array)
  tmp = Manipulation.merge_hash(
    YAML.load(
      ERB.new(deployment_yaml).result(template_context)
    ),
    deploy_merge(id)
  )
end