Class: Kuby::Docker::PackagePhase
- Extended by:
- T::Sig
- Defined in:
- lib/kuby/docker/package_phase.rb
Constant Summary collapse
- Operation =
T.type_alias { [Symbol, Symbol, T.nilable(String)] }
Instance Attribute Summary collapse
-
#operations ⇒ Object
readonly
Returns the value of attribute operations.
Attributes inherited from Layer
Instance Method Summary collapse
- #add(package_name, version = nil) ⇒ Object
- #apply_to(dockerfile) ⇒ Object
-
#initialize(environment) ⇒ PackagePhase
constructor
A new instance of PackagePhase.
- #remove(package_name) ⇒ Object
Constructor Details
#initialize(environment) ⇒ PackagePhase
Returns a new instance of PackagePhase.
14 15 16 17 18 |
# File 'lib/kuby/docker/package_phase.rb', line 14 def initialize(environment) super @operations = T.let([], T::Array[Operation]) end |
Instance Attribute Details
#operations ⇒ Object (readonly)
Returns the value of attribute operations.
11 12 13 |
# File 'lib/kuby/docker/package_phase.rb', line 11 def operations @operations end |
Instance Method Details
#add(package_name, version = nil) ⇒ Object
21 22 23 |
# File 'lib/kuby/docker/package_phase.rb', line 21 def add(package_name, version = nil) operations << [:add, package_name, version] end |
#apply_to(dockerfile) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/kuby/docker/package_phase.rb', line 31 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 package_impls = packages.map do |package_name, version| get_package(package_name, version) end distro_spec.install(package_impls, into: dockerfile) end |
#remove(package_name) ⇒ Object
26 27 28 |
# File 'lib/kuby/docker/package_phase.rb', line 26 def remove(package_name) operations << [:remove, package_name, nil] end |