Sha256: 85c5be06f47ec862d49e26b7cd6aba3a689416d57cf46fd23cecbb37b3389a3d

Contents?: true

Size: 1.39 KB

Versions: 2

Compression:

Stored size: 1.39 KB

Contents

module Kuby
  module Plugins
    module RailsApp
      class AssetsImage < ::Kuby::Docker::Image
        attr_reader :base_image

        def initialize(base_image, dockerfile, main_tag = nil, alias_tags = [])
          super(dockerfile, base_image.image_url, base_image.credentials, main_tag, alias_tags)
          @base_image = base_image
        end

        def new_version
          # Asset images track the base image, so return the current version
          # here. There can be no asset image without a base image.
          current_version
        end

        def current_version
          @current_version ||= duplicate_with_annotated_tags(
            base_image.current_version
          )
        end

        def previous_version
          @previous_version ||= duplicate_with_annotated_tags(
            base_image.previous_version
          )
        end

        def build(build_args = {})
          docker_cli.build(current_version, build_args: build_args)
        end

        def push(tag)
          docker_cli.push(image_url, tag)
        end

        private

        def duplicate_with_annotated_tags(image)
          self.class.new(
            base_image,
            dockerfile,
            annotate_tag(image.main_tag),
            image.alias_tags.map { |at| annotate_tag(at) }
          )
        end

        def annotate_tag(tag)
          "#{tag}-assets"
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
kuby-core-0.13.0 lib/kuby/plugins/rails_app/assets_image.rb
kuby-core-0.12.0 lib/kuby/plugins/rails_app/assets_image.rb