Sha256: d018dffa655683fc62b2d23767c2eb77b60fcfeac560c93f582dc0b90166b227

Contents?: true

Size: 1.88 KB

Versions: 17

Compression:

Stored size: 1.88 KB

Contents

require 'fileutils'

class AwsEc2::Script
  class Compress < AwsEc2::Base
    def compress
      reset
      puts "Tarballing #{BUILD_ROOT}/app/scripts folder to scripts.tgz".colorize(:green)
      tarball_path = create_tarball
      save_scripts_info(tarball_path)
      puts "Tarball created at #{tarball_path}"
    end

    def create_tarball
      # https://apple.stackexchange.com/questions/14980/why-are-dot-underscore-files-created-and-how-can-i-avoid-them
      sh "cd #{BUILD_ROOT}/app && dot_clean ." if system("type dot_clean > /dev/null")

      # https://serverfault.com/questions/110208/different-md5sums-for-same-tar-contents
      # Using tar czf directly results in a new m5sum each time because the gzip
      # timestamp is included.  So using:  tar -c ... | gzip -n
      sh "cd #{BUILD_ROOT}/app && tar -c scripts | gzip -n > scripts.tgz" # temporary app/scripts.tgz file

      rename_with_md5!
    end

    def clean
      FileUtils.rm_f("#{BUILD_ROOT}/scripts/scripts-#{md5sum}.tgz")
    end

    # Apppend a md5 to file after it's been created and moves it to
    # output/scripts/scripts-[MD5].tgz
    def rename_with_md5!
      md5_path = "#{BUILD_ROOT}/scripts/scripts-#{md5sum}.tgz"
      FileUtils.mkdir_p(File.dirname(md5_path))
      FileUtils.mv("#{BUILD_ROOT}/app/scripts.tgz", md5_path)
      md5_path
    end

    def save_scripts_info(scripts_name)
      FileUtils.mkdir_p(File.dirname(SCRIPTS_INFO_PATH))
      IO.write(SCRIPTS_INFO_PATH, scripts_name)
    end

    # cache this because the file will get removed
    def md5sum
      @md5sum ||= Digest::MD5.file("#{BUILD_ROOT}/app/scripts.tgz").to_s[0..7]
    end

    def sh(command)
      puts "=> #{command}"
      system command
    end

    # Only avaialble after script has been built.
    def scripts_name
      IO.read(SCRIPTS_INFO_PATH).strip
    end

    def reset
      FileUtils.rm_f(SCRIPTS_INFO_PATH)
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
aws-ec2-1.4.9 lib/aws_ec2/script/compress.rb
aws-ec2-1.4.8 lib/aws_ec2/script/compress.rb
aws-ec2-1.4.7 lib/aws_ec2/script/compress.rb
aws-ec2-1.4.6 lib/aws_ec2/script/compress.rb
aws-ec2-1.4.5 lib/aws_ec2/script/compress.rb
aws-ec2-1.4.4 lib/aws_ec2/script/compress.rb
aws-ec2-1.4.3 lib/aws_ec2/script/compress.rb
aws-ec2-1.4.2 lib/aws_ec2/script/compress.rb
aws-ec2-1.4.1 lib/aws_ec2/script/compress.rb
aws-ec2-1.4.0 lib/aws_ec2/script/compress.rb
aws-ec2-1.3.2 lib/aws_ec2/script/compress.rb
aws-ec2-1.3.1 lib/aws_ec2/script/compress.rb
aws-ec2-1.3.0 lib/aws_ec2/script/compress.rb
aws-ec2-1.2.2 lib/aws_ec2/script/compress.rb
aws-ec2-1.2.1 lib/aws_ec2/script/compress.rb
aws-ec2-1.2.0 lib/aws_ec2/script/compress.rb
aws-ec2-1.1.0 lib/aws_ec2/script/compress.rb