Class: Capsium::Reactor::PackageSaver

Inherits:
Object
  • Object
show all
Defined in:
lib/capsium/reactor/package_saver.rb,
sig/capsium/reactor/package_saver.rbs

Overview

Folds a mounted package's base plus its overlay into a NEW versioned .cap (name-version+patch.cap) in the reactor workdir.

Instance Method Summary collapse

Constructor Details

#initialize(mount) ⇒ PackageSaver

Returns a new instance of PackageSaver.

Parameters:



18
19
20
21
22
# File 'lib/capsium/reactor/package_saver.rb', line 18

def initialize(mount)
  @mount = mount
  @package = mount.package
  @overlay = mount.overlay
end

Instance Method Details

#save(workdir) ⇒ Hash[String, String]

Saves and returns the "sha256", "name", "version" hash.

Parameters:

  • workdir (String)

Returns:

  • (Hash[String, String])


25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/capsium/reactor/package_saver.rb', line 25

def save(workdir)
  staging_parent = File.join(workdir, "saved")
  FileUtils.mkdir_p(staging_parent)
  stage = Dir.mktmpdir("fold-", staging_parent)
  begin
    fold_into(stage)
    output = Packager.new.pack(Package.new(stage), { force: true })
    { "path" => output,
      "sha256" => Digest::SHA256.file(output).hexdigest,
      "name" => @package.name,
      "version" => bumped_version }
  ensure
    FileUtils.remove_entry(stage)
  end
end