Class: Kuby::Docker::PackagePhase

Inherits:
Phase
  • Object
show all
Defined in:
lib/kuby/docker/package_phase.rb

Instance Attribute Summary collapse

Attributes inherited from Phase

#definition

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ PackagePhase

Returns a new instance of PackagePhase.



6
7
8
9
10
# File 'lib/kuby/docker/package_phase.rb', line 6

def initialize(*args)
  super

  @operations = []
end

Instance Attribute Details

#operationsObject (readonly)

Returns the value of attribute operations.



4
5
6
# File 'lib/kuby/docker/package_phase.rb', line 4

def operations
  @operations
end

Instance Method Details

#add(package_name, version = nil) ⇒ Object



12
13
14
# File 'lib/kuby/docker/package_phase.rb', line 12

def add(package_name, version = nil)
  operations << [:add, package_name, version]
end

#apply_to(dockerfile) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/kuby/docker/package_phase.rb', line 20

def apply_to(dockerfile)
  packages = distro_spec.default_packages.dup

  operations.each do |operator, package_name, version|
    if operator == :add
      packages << [package_name, version]
    else
      packages.reject! do |pkg_name_to_del, *|
        pkg_name_to_del == package_name
      end
    end
  end

  packages.map! do |package_name, version|
    get_package(package_name, version)
  end

  distro_spec.install(packages, into: dockerfile)
end

#remove(package_name) ⇒ Object



16
17
18
# File 'lib/kuby/docker/package_phase.rb', line 16

def remove(package_name)
  operations << [:remove, package_name]
end