Sha256: 4db9960461242e9a72890afc0c365d36c918dbc7f03b48659cad4c9aa5e403f3

Contents?: true

Size: 1.48 KB

Versions: 22

Compression:

Stored size: 1.48 KB

Contents

require 'docker'
require 'ostruct'
require_relative '../tasklib'

module RakeDocker
  module Tasks
    class Tag < TaskLib
      parameter :name, :default => :tag
      parameter :argument_names, :default => []

      parameter :image_name, :required => true
      parameter :repository_name, :required => true
      parameter :repository_url, :required => true

      parameter :tags, :required => true

      def process_arguments(args)
        self.name = args[0] if args[0]
      end

      def define
        desc "Tag #{image_name} image for repository"
        task name, argument_names do |_, args|
          params = OpenStruct.new(
              image_name: image_name,
              repository_name: repository_name
          )

          derived_repository_url = repository_url.respond_to?(:call) ?
              repository_url.call(*[args, params].slice(0, repository_url.arity)) :
              repository_url
          derived_tags = tags.respond_to?(:call) ?
              tags.call(*[args, params].slice(0, tags.arity)) :
              tags

          images = Docker::Image.all(filter: repository_name)
          if images.empty?
            raise RakeDocker::ImageNotFound,
                  "No image found with name: '#{image_name}'"
          end

          image = images.first

          derived_tags.each do |tag|
            image.tag(repo: derived_repository_url,
                      tag: tag,
                      force: true)
          end
        end
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
rake_docker-0.23.0 lib/rake_docker/tasks/tag.rb
rake_docker-0.22.0.pre.pre.1 lib/rake_docker/tasks/tag.rb
rake_docker-0.21.0 lib/rake_docker/tasks/tag.rb
rake_docker-0.20.0.pre.pre.4 lib/rake_docker/tasks/tag.rb
rake_docker-0.20.0.pre.pre.3 lib/rake_docker/tasks/tag.rb
rake_docker-0.20.0.pre.pre.2 lib/rake_docker/tasks/tag.rb
rake_docker-0.20.0.pre.pre.1 lib/rake_docker/tasks/tag.rb
rake_docker-0.19.0 lib/rake_docker/tasks/tag.rb
rake_docker-0.18.0.pre.pre.1 lib/rake_docker/tasks/tag.rb
rake_docker-0.17.0 lib/rake_docker/tasks/tag.rb
rake_docker-0.16.1.pre2 lib/rake_docker/tasks/tag.rb
rake_docker-0.16.1.pre1 lib/rake_docker/tasks/tag.rb
rake_docker-0.16.0 lib/rake_docker/tasks/tag.rb
rake_docker-0.15.1.pre2 lib/rake_docker/tasks/tag.rb
rake_docker-0.15.1.pre1 lib/rake_docker/tasks/tag.rb
rake_docker-0.15.0 lib/rake_docker/tasks/tag.rb
rake_docker-0.14.1.pre1 lib/rake_docker/tasks/tag.rb
rake_docker-0.14.0 lib/rake_docker/tasks/tag.rb
rake_docker-0.13.0 lib/rake_docker/tasks/tag.rb
rake_docker-0.12.0 lib/rake_docker/tasks/tag.rb