Sha256: e0b99193bde2f6c557c8af0e8174d1b9d13719b7e604978c0a35973172a57b4c

Contents?: true

Size: 1.15 KB

Versions: 3

Compression:

Stored size: 1.15 KB

Contents

module Soaring
  class Packager
    def initialize(options)
      @options = options
    end

    def package(project_folder)
      validate_project if not @options[:ignore_git_checks]
      build_output_location = generate_build_output_location(project_folder)
      `mkdir -p #{project_folder}/build`
      `zip -r #{build_output_location} * .ebextensions --exclude=build/* --exclude=config/environment.yml`
      puts "Build packaged at #{build_output_location}"
    end

    private

    def validate_project
      if not is_git_repo_up_to_date?
        puts "Local git repo is dirty and should not be packaged"
        exit 1
      end
      puts 'Local git repo up to date.' if @options[:verbose]
    end

    def generate_build_output_location(project_folder)
      service_name = File.split(project_folder)[-1]
      revision_hash = `git rev-parse --short HEAD`.chomp
      timestamp = Time.now.strftime("%F-%H%M%S")
      "#{project_folder}/build/build_#{service_name}_#{revision_hash}_#{timestamp}.zip"
    end

    def is_git_repo_up_to_date?
      git_response = `git status --porcelain`.chomp
      return true if '' == git_response
      false
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
soaring-0.1.9 lib/soaring/packager.rb
soaring-0.1.8 lib/soaring/packager.rb
soaring-0.1.7 lib/soaring/packager.rb