Sha256: b8ab1fe3db5feb51ca72818004611fccda44b61bd8deb2ea795bd32a5237f7b5

Contents?: true

Size: 1.72 KB

Versions: 52

Compression:

Stored size: 1.72 KB

Contents

class Dockly::BuildCache::Local < Dockly::BuildCache::Base
  def run_build
    puts "Build command: #{build_command}"
    status, body = run_command(build_command)
    raise "Build Cache `#{build_command}` failed to run.\nError: #{body}" unless status.success?
    FileUtils.mkdir_p(File.dirname(save_file))
    tar_file = Dockly::Util::Tar.tar(output_directory, save_file)
    push_to_s3(tar_file)
  end

  def output_directory
    File.expand_path(File.join(Dir.pwd, output_dir))
  end

  def save_file
    File.expand_path("build/build_cache/#{s3_object_prefix}#{hash_output}")
  end

  def push_cache(version)
    ensure_present! :output_dir
    if cache = pull_from_s3(version)
      dest = File.dirname(File.expand_path(output_dir))
      Dockly::Util::Tar.untar(cache, dest)
    else
      info "could not find #{s3_object(output_dir)}"
    end
  end

  def hash_output
    ensure_present! :hash_command
    @hash_output ||= begin
      status, body = run_command(hash_command)
      raise "Hash Command `#{hash_command} failed to run" unless status.success?
      body
    end
  end

  def parameter_output(command)
    raise "Parameter Command tried to run but not found" unless parameter_commands.keys.include?(command)
    @parameter_commands[command] ||= begin
      status, body = run_command(command)
      raise "Parameter Command `#{command} failed to run" unless status.success?
      body
    end
  end

  def run_command(command)
    resp = ""
    run_with_bundler do
      IO.popen(command) do |io|
        resp << io.read
      end
    end
    [$?, resp.strip]
  end

  if defined?(Bundler)
    def run_with_bundler
      Bundler.with_clean_env do
        yield
      end
    end
  else
    def run_with_bundler
      yield
    end
  end
end

Version data entries

52 entries across 52 versions & 1 rubygems

Version Path
dockly-4.4.1 lib/dockly/build_cache/local.rb
dockly-4.4.0 lib/dockly/build_cache/local.rb
dockly-4.3.0 lib/dockly/build_cache/local.rb
dockly-4.2.0 lib/dockly/build_cache/local.rb
dockly-4.1.0 lib/dockly/build_cache/local.rb
dockly-4.0.0 lib/dockly/build_cache/local.rb
dockly-3.4.1 lib/dockly/build_cache/local.rb
dockly-3.4.0 lib/dockly/build_cache/local.rb
dockly-3.3.0 lib/dockly/build_cache/local.rb
dockly-3.2.0.pre.1 lib/dockly/build_cache/local.rb
dockly-3.1.1 lib/dockly/build_cache/local.rb
dockly-3.1.0 lib/dockly/build_cache/local.rb
dockly-3.0.5 lib/dockly/build_cache/local.rb
dockly-3.0.4 lib/dockly/build_cache/local.rb
dockly-3.0.3 lib/dockly/build_cache/local.rb
dockly-3.0.2 lib/dockly/build_cache/local.rb
dockly-3.0.1 lib/dockly/build_cache/local.rb
dockly-3.0.0 lib/dockly/build_cache/local.rb
dockly-2.7.2 lib/dockly/build_cache/local.rb
dockly-2.7.1 lib/dockly/build_cache/local.rb