Sha256: bf39b69c30516e4580f5dc2a9ea69f646becb9532beb14e8f74fd48ead48766b

Contents?: true

Size: 1.1 KB

Versions: 3

Compression:

Stored size: 1.1 KB

Contents

require 'rake_factory'
require 'docker'

require_relative '../output'

module RakeDocker
  module Tasks
    class Build < RakeFactory::Task
      default_name :build
      default_description ->(t) { "Build #{t.image_name} image" }
      default_prerequisites ->(t) {
        t.prepare_task_name ?
            [Rake.application.current_scope
                .path_with_task_name(t.prepare_task_name)] :
            []
      }

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

      parameter :credentials

      parameter :build_args

      parameter :work_directory, :required => true

      parameter :prepare_task_name, :default => :prepare

      action do |t|
        Docker.authenticate!(t.credentials) if t.credentials

        options = {t: t.repository_name}
        options = options.merge(
            buildargs: JSON.generate(t.build_args)) if t.build_args

        Docker::Image.build_from_dir(
            File.join(t.work_directory, t.image_name),
            options
        ) do |chunk|
          Output.print chunk
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rake_docker-1.1.0 lib/rake_docker/tasks/build.rb
rake_docker-1.0.0.pre.pre.2 lib/rake_docker/tasks/build.rb
rake_docker-0.24.0.pre.1 lib/rake_docker/tasks/build.rb