class Bosh::Cli::ReleaseArchiver

Attributes

build_dir[R]
filepath[R]
jobs[R]
license[R]
manifest[R]
packages[R]

Public Class Methods

new(filepath, manifest, packages, jobs, license = nil) click to toggle source
# File lib/cli/release_archiver.rb, line 5
def initialize(filepath, manifest, packages, jobs, license = nil)
  @filepath = filepath
  @manifest = manifest
  @packages = packages
  @jobs = jobs
  @license = license

  @build_dir = Dir.mktmpdir
end

Public Instance Methods

build() click to toggle source
# File lib/cli/release_archiver.rb, line 15
def build
  FileUtils.copy(manifest, File.join(build_dir, 'release.MF'), :preserve => true)

  packages_dir = FileUtils.mkdir_p(File.join(build_dir, 'packages'))
  header("Copying packages")
  packages.each do |package|
    say(package.name.make_green)
    FileUtils.copy(package.tarball_path, File.join(packages_dir, "#{package.name}.tgz"), :preserve => true)
  end
  nl

  jobs_dir = FileUtils.mkdir_p(File.join(build_dir, 'jobs'))
  header("Copying jobs")
  jobs.each do |job|
    say(job.name.make_green)
    FileUtils.copy(job.tarball_path, File.join(jobs_dir, "#{job.name}.tgz"), :preserve => true)
  end
  nl

  if license
    header("Copying license")
    say("license".make_green)
    nl
    %x`tar -xzf #{license.tarball_path} -C #{build_dir} 2>&1`
    unless $?.exitstatus == 0
      raise InvalidRelease, "Cannot extract license tarball"
    end
  end

  SortedReleaseArchiver.new(build_dir).archive(filepath)

  say("Generated #{filepath.make_green}")
  say("Release size: #{pretty_size(filepath).make_green}")
end