class StackMaster::Commands::Init

Public Class Methods

new(options, region, stack_name) click to toggle source
Calls superclass method StackMaster::Command::new
# File lib/stack_master/commands/init.rb, line 8
def initialize(options, region, stack_name)
  super(nil, nil, options)
  @region = region
  @stack_name = stack_name
end

Public Instance Methods

perform() click to toggle source
# File lib/stack_master/commands/init.rb, line 14
def perform
  if check_files
    create_stack_master_yml
    create_stack_json_yml
    create_parameters_yml
  end
end

Private Instance Methods

check_files() click to toggle source
# File lib/stack_master/commands/init.rb, line 24
def check_files
  @stack_master_filename = "stack_master.yml"
  @stack_json_filename = "templates/#{@stack_name}.json"
  @parameters_filename = File.join("parameters", "#{@stack_name}.yml")
  @region_parameters_filename = File.join("parameters", @region, "#{@stack_name}.yml")

  if !@options.overwrite
    [@stack_master_filename, @stack_json_filename, @parameters_filename, @region_parameters_filename].each do |filename|
      if File.exists?(filename)
        StackMaster.stderr.puts("Aborting: #{filename} already exists. Use --overwrite to force overwriting file.")
        return false
      end
    end
  end
  true
end
create_parameters_yml() click to toggle source
# File lib/stack_master/commands/init.rb, line 68
def create_parameters_yml
  StackMaster.stdout.puts "Writing #{@parameters_filename}"
  StackMaster.stdout.puts "Writing #{@region_parameters_filename}"
  FileUtils.mkdir_p("parameters/#{@region}")
  IO.write(@parameters_filename, parameter_stack_name_yml_output)
  IO.write(@region_parameters_filename, parameter_region_yml_output)
end
create_stack_json_yml() click to toggle source
# File lib/stack_master/commands/init.rb, line 41
def create_stack_json_yml
  StackMaster.stdout.puts "Writing #{@stack_json_filename}"
  FileUtils.mkdir_p(File.dirname(@stack_json_filename))
  IO.write(@stack_json_filename, stack_json_output)
end
create_stack_master_yml() click to toggle source
# File lib/stack_master/commands/init.rb, line 55
def create_stack_master_yml
  StackMaster.stdout.puts "Writing #{@stack_master_filename}"
  IO.write("#{@stack_master_filename}", stack_master_yml_output)
end
parameter_region_template() click to toggle source
# File lib/stack_master/commands/init.rb, line 88
def parameter_region_template
  File.join(StackMaster.base_dir, "stacktemplates", "parameter_region.yml")
end
parameter_region_yml_output() click to toggle source
# File lib/stack_master/commands/init.rb, line 80
def parameter_region_yml_output
  File.read(parameter_region_template)
end
parameter_stack_name_template() click to toggle source
# File lib/stack_master/commands/init.rb, line 84
def parameter_stack_name_template
  File.join(StackMaster.base_dir, "stacktemplates", "parameter_stack_name.yml")
end
parameter_stack_name_yml_output() click to toggle source
# File lib/stack_master/commands/init.rb, line 76
def parameter_stack_name_yml_output
  File.read(parameter_stack_name_template)
end
render(renderer) click to toggle source
# File lib/stack_master/commands/init.rb, line 92
def render(renderer)
  binding = InitBinding.new(region: @region, stack_name: @stack_name).get_binding
  renderer.result(binding)
end
stack_json_output() click to toggle source
# File lib/stack_master/commands/init.rb, line 47
def stack_json_output
  render ERB.new(File.read(stack_json_template))
end
stack_json_template() click to toggle source
# File lib/stack_master/commands/init.rb, line 51
def stack_json_template
  File.join(StackMaster.base_dir, "stacktemplates", "stack.json.erb")
end
stack_master_template() click to toggle source
# File lib/stack_master/commands/init.rb, line 64
def stack_master_template
  File.join(StackMaster.base_dir, "stacktemplates", "stack_master.yml.erb")
end
stack_master_yml_output() click to toggle source
# File lib/stack_master/commands/init.rb, line 60
def stack_master_yml_output
  render ERB.new(File.read(stack_master_template))
end