Sha256: d9c5ea7b8903aba736a2378c737cbaf5c1b9e9cdbe3843438fdc77e908c0c985

Contents?: true

Size: 1.26 KB

Versions: 9

Compression:

Stored size: 1.26 KB

Contents

class Lono::Cfn
  class Diff < Base
    include Lono::AwsServices

    def run
      unless stack_exists?(@stack_name)
        puts "WARN: Cannot create a diff for the stack because the #{@stack_name} does not exists.".color(:yellow)
        return
      end

      if @options[:noop]
        puts "NOOP Generating CloudFormation source code diff..."
      else
        generate_all # from Base superclass. Generates the output lono teplates
        puts "Generating CloudFormation source code diff..."
        download_existing_cfn_template
        show_changes
      end
    end

    def download_existing_cfn_template
      resp = cfn.get_template(
        stack_name: @stack_name,
        template_stage: "Original"
      )
      resp.template_body
      IO.write(existing_template_path, resp.template_body)
    end

    def show_changes
      command = "#{diff_viewer} #{existing_template_path} #{new_cfn_template}"
      puts "Running: #{command}"
      system(command)
    end

    # for clarity
    def new_cfn_template
      @template_path
    end

    def diff_viewer
      return ENV['LONO_DIFF'] if ENV['LONO_DIFF']
      system("type colordiff > /dev/null") ? "colordiff" : "diff"
    end

    def existing_template_path
      "/tmp/existing_cfn_template.yml"
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
lono-5.2.8 lib/lono/cfn/diff.rb
lono-5.2.7 lib/lono/cfn/diff.rb
lono-5.2.6 lib/lono/cfn/diff.rb
lono-5.2.5 lib/lono/cfn/diff.rb
lono-5.2.4 lib/lono/cfn/diff.rb
lono-5.2.3 lib/lono/cfn/diff.rb
lono-5.2.2 lib/lono/cfn/diff.rb
lono-5.2.1 lib/lono/cfn/diff.rb
lono-5.2.0 lib/lono/cfn/diff.rb