class BoshJobDocker::ReleaseTarball
A BOSH release tarball.
Attributes
extracter[R]
resolver[R]
work_dir[R]
Public Class Methods
new(path)
click to toggle source
# File lib/bosh_job_docker/release_tarball.rb, line 13 def initialize(path) @work_dir = Dir.mktmpdir @extracter = TarExtracter.new extracter.extract(path, work_dir) @resolver = PackageDepResolver.new(release_manifest) end
Public Instance Methods
build_order(job)
click to toggle source
# File lib/bosh_job_docker/release_tarball.rb, line 30 def build_order(job) job_packages(job).reduce([]) do |order, p| order + resolver.package_deps(p) end.uniq end
extract_package(package, dest)
click to toggle source
# File lib/bosh_job_docker/release_tarball.rb, line 25 def extract_package(package, dest) FileUtils.mkdir_p(dest) extracter.extract(package_tarball_path(package), dest) end
release_manifest()
click to toggle source
# File lib/bosh_job_docker/release_tarball.rb, line 21 def release_manifest YAML.load_file(File.join(work_dir, 'release.MF')) end
Private Instance Methods
job_packages(job)
click to toggle source
# File lib/bosh_job_docker/release_tarball.rb, line 48 def job_packages(job) job_spec(job)['packages'] end
job_spec(job)
click to toggle source
# File lib/bosh_job_docker/release_tarball.rb, line 42 def job_spec(job) job_work_dir = Dir.mktmpdir extracter.extract(job_tarball_path(job), job_work_dir) YAML.load_file(File.join(job_work_dir, 'job.MF')) end
job_tarball_path(job)
click to toggle source
# File lib/bosh_job_docker/release_tarball.rb, line 38 def job_tarball_path(job) File.join(work_dir, 'jobs', "#{job}.tgz") end
package_tarball_path(package)
click to toggle source
# File lib/bosh_job_docker/release_tarball.rb, line 52 def package_tarball_path(package) File.join(work_dir, 'packages', "#{package}.tgz") end