Sha256: c21bb9d9f434045fe68a2db148f6d189f73c275ecd556ec661f491a2675c9521

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

#!/usr/bin/env ruby
# frozen_string_literal: true

require "bundler/setup"
require "aws_as_code"
require "thor"
require "cfndsl"
require "ostruct"

DEFAULT_RUBY_DIR = "cfn".freeze
DEFAULT_JSON_DIR = "cfn-compiled".freeze
DEFAULT_STACK = "master".freeze
DEFAULT_TEMPLATE = "environment".freeze

# Main CLI application for aws-as-code gem
class AwsAsCodeCli < Thor
  class_option :ruby_dir, default: DEFAULT_RUBY_DIR
  class_option :json_dir, default: DEFAULT_JSON_DIR
  class_option :bucket, required: true
  class_option :template, default: DEFAULT_TEMPLATE
  class_option :stack, default: DEFAULT_STACK

  desc "compile", "compile cfndsl to CF JSON"
  def compile
    AwsAsCode::Task::Compile.new(config).execute
  end

  desc "upload", "upload compiled data to S3 bucket"
  def upload
    AwsAsCode::Task::Upload.new(config).execute
  end

  desc "do-create", "create a new stack"
  def do_create
    AwsAsCode::Task::Create.new(config).execute
  end

  desc "do-update", "update existing stack"
  def do_update
    AwsAsCode::Task::Update.new(config).execute
  end

  desc "create", "create a new stack"
  def create
    invoke :compile
    invoke :upload
    invoke :do_create
  end

  desc "update", "update existing stack"
  def update
    invoke :compile
    invoke :upload
    invoke :do_update
  end

  private

  def config
    @config ||= OpenStruct.new options
  end
end

AwsAsCodeCli.start(ARGV)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
aws_as_code-1.0.1 exe/aws-as-code