Sha256: 83f564ad207be51aa421c4c459966cbefe494d8c6e89ecd5fa382a0f7b708cda

Contents?: true

Size: 1.66 KB

Versions: 62

Compression:

Stored size: 1.66 KB

Contents

require 'engineyard-serverside/source'

# Deploy source for archive sourced deploy.
class EY::Serverside::Source::Archive < EY::Serverside::Source
  require_opts :uri, :repository_cache

  def create_revision_file_command(revision_file_path)
    "echo #{escape(@checksum || filename)} > #{escape(revision_file_path.to_s)}"
  end

  def gc_repository_cache
    # If files are uploaded to the server, we should clean them up here probably.
  end

  def same?(previous_rev, current_rev, paths=nil)
    previous_rev == current_rev
  end

  def short_log_message(rev)
    rev
  end

  def update_repository_cache
    clean_cache
    in_source_cache do
      unless fetch && checksum
        shell.fatal "archive fetch from #{URI.parse(uri).hostname} failed."
        raise "archive fetch from #{URI.parse(uri).hostname} failed."
      end

      unless unarchive
        shell.fatal "unarchive of #{filename} failed."
        raise "unarchive of #{filename} failed."
      end
    end
  end

  protected

  def checksum
    @checksum = run_and_output("shasum #{File.join(source_cache, escaped_filename)}").strip
  end

  def clean_cache
    run "rm -rf #{source_cache} && mkdir -p #{source_cache}"
  end

  def fetch_command
    "curl --location --silent --show-error --fail -o #{escaped_filename} --user-agent #{escape("EngineYardDeploy/#{EY::Serverside::VERSION}")} #{escape(uri)}"
  end

  def fetch
    run_and_success?(fetch_command)
  end

  def filename
    @filename ||= File.basename(URI.parse(uri).path)
  end

  # TODO: configurable via flag
  def unarchive
    run_and_success? "unzip #{escaped_filename} && rm #{escaped_filename}"
  end

  def escaped_filename
    escape(filename)
  end

end

Version data entries

62 entries across 62 versions & 1 rubygems

Version Path
engineyard-serverside-3.0.4 lib/engineyard-serverside/source/archive.rb
engineyard-serverside-3.0.3 lib/engineyard-serverside/source/archive.rb
engineyard-serverside-2.8.0 lib/engineyard-serverside/source/archive.rb
engineyard-serverside-2.8.0.pre4 lib/engineyard-serverside/source/archive.rb
engineyard-serverside-2.8.0.pre3 lib/engineyard-serverside/source/archive.rb
engineyard-serverside-2.8.0.pre2 lib/engineyard-serverside/source/archive.rb
engineyard-serverside-2.8.0.pre lib/engineyard-serverside/source/archive.rb
engineyard-serverside-2.7.0.pre lib/engineyard-serverside/source/archive.rb
engineyard-serverside-2.6.19 lib/engineyard-serverside/source/archive.rb
engineyard-serverside-2.6.17 lib/engineyard-serverside/source/archive.rb
engineyard-serverside-2.6.16 lib/engineyard-serverside/source/archive.rb
engineyard-serverside-2.6.15.alpha1 lib/engineyard-serverside/source/archive.rb
engineyard-serverside-2.6.15.cf2 lib/engineyard-serverside/source/archive.rb
engineyard-serverside-2.6.15.pre lib/engineyard-serverside/source/archive.rb
engineyard-serverside-2.6.14 lib/engineyard-serverside/source/archive.rb
engineyard-serverside-2.6.13 lib/engineyard-serverside/source/archive.rb
engineyard-serverside-2.6.12 lib/engineyard-serverside/source/archive.rb
engineyard-serverside-2.6.12.prewut5 lib/engineyard-serverside/source/archive.rb
engineyard-serverside-2.6.12.prewut4 lib/engineyard-serverside/source/archive.rb
engineyard-serverside-2.6.12.prewut3 lib/engineyard-serverside/source/archive.rb