Sha256: 99a5b9105dc4d0dc1179bcc7be56896f488d594dbdb595326b2362ae18172ba3
Contents?: true
Size: 1.86 KB
Versions: 7
Compression:
Stored size: 1.86 KB
Contents
# typed: strict module Kuby module Docker class PackagePhase < Layer extend T::Sig Operation = T.type_alias { [Symbol, Symbol, T.nilable(String)] } sig { returns(T::Array[Operation]) } attr_reader :operations sig { params(environment: Environment).void } def initialize(environment) super @operations = T.let([], T::Array[Operation]) end sig { params(package_name: Symbol, version: T.nilable(String)).void } def add(package_name, version = nil) operations << [:add, package_name, version] end sig { params(package_name: Symbol).void } def remove(package_name) operations << [:remove, package_name, nil] end sig { override.params(dockerfile: Dockerfile).void } 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 private sig { returns(Distro) } def distro_spec environment.docker.distro_spec end sig { params( package_name: Symbol, version: T.nilable(String) ) .returns(Distro::PackageImpl) } def get_package(package_name, version) if package = Kuby.packages[package_name] package.with_version(version) else raise MissingPackageError, "package '#{package_name}' hasn't been registered" end end end end end
Version data entries
7 entries across 7 versions & 1 rubygems