Sha256: 72710786073c00a4fdc67cb8c5642dec07efb88293b90e32ccd0e0eb1ad6d2b7
Contents?: true
Size: 1.48 KB
Versions: 7
Compression:
Stored size: 1.48 KB
Contents
# typed: strict module Kuby module Docker class LocalTags extend T::Sig sig { returns CLI } attr_reader :cli sig { returns(String) } attr_reader :image_url sig { params( cli: CLI, image_url: String ) .void } def initialize(cli, image_url) @cli = cli @image_url = image_url @latest_timestamp_tag = T.let(@latest_timestamp_tag, T.nilable(TimestampTag)) end sig { returns(T::Array[String]) } def tags images = cli.images(image_url) images.map { |image| T.must(image[:tag]) } end sig { returns(T::Array[String]) } def latest_tags # find "latest" tag images = cli.images(image_url) latest = images.find { |image| image[:tag] == Kuby::Docker::LATEST_TAG } unless latest raise MissingTagError, "could not find tag #{Kuby::Docker::LATEST_TAG}" end # find all tags that point to the same image as 'latest' images.each_with_object([]) do |image_data, tags| if image_data[:id] == latest[:id] tags << image_data[:tag] end end end sig { returns(T::Array[TimestampTag]) } def timestamp_tags tags.map { |t| TimestampTag.try_parse(t) }.compact end sig { returns(T.nilable(TimestampTag)) } def latest_timestamp_tag @latest_timestamp_tag ||= timestamp_tags.sort.last end end end end
Version data entries
7 entries across 7 versions & 1 rubygems