Sha256: 8e2f829a6c8b0296eb96c634580477da6e0e62375bd85212718eacbace4b9850

Contents?: true

Size: 1.09 KB

Versions: 2

Compression:

Stored size: 1.09 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

2 entries across 2 versions & 1 rubygems

Version Path
rake_docker-1.3.0 lib/rake_docker/tasks/build.rb
rake_docker-1.2.0.pre.1 lib/rake_docker/tasks/build.rb