Sha256: 1cb8a6d4dc0cb849e6a91bdf2504ffaa2f9570ca1638c4d5c7b08e6f5d96f350

Contents?: true

Size: 1.73 KB

Versions: 12

Compression:

Stored size: 1.73 KB

Contents

require 'docker'
require_relative '../tasklib'
require_relative '../../docker_output'

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

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

      parameter :credentials

      parameter :build_args

      parameter :work_directory, :required => true

      parameter :prepare_task, :default => :prepare

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

      def define
        prerequisites = prepare_task ?
            [scoped_task_name(prepare_task)] :
            []

        desc "Build #{image_name} image"
        task name, argument_names => prerequisites do |_, args|
          params = OpenStruct.new(
              image_name: image_name,
              repository_name: repository_name,
              credentials: credentials,
              work_directory: work_directory
          )

          derived_credentials = credentials.respond_to?(:call) ?
              credentials.call(*[args, params].slice(0, credentials.arity)) :
              credentials

          Docker.authenticate!(derived_credentials) if derived_credentials

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

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

      private

      def scoped_task_name(task_name)
        Rake.application.current_scope.path_with_task_name(task_name)
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
rake_docker-0.23.0 lib/rake_docker/tasks/build.rb
rake_docker-0.22.0.pre.pre.1 lib/rake_docker/tasks/build.rb
rake_docker-0.21.0 lib/rake_docker/tasks/build.rb
rake_docker-0.20.0.pre.pre.4 lib/rake_docker/tasks/build.rb
rake_docker-0.20.0.pre.pre.3 lib/rake_docker/tasks/build.rb
rake_docker-0.20.0.pre.pre.2 lib/rake_docker/tasks/build.rb
rake_docker-0.20.0.pre.pre.1 lib/rake_docker/tasks/build.rb
rake_docker-0.19.0 lib/rake_docker/tasks/build.rb
rake_docker-0.18.0.pre.pre.1 lib/rake_docker/tasks/build.rb
rake_docker-0.17.0 lib/rake_docker/tasks/build.rb
rake_docker-0.16.1.pre2 lib/rake_docker/tasks/build.rb
rake_docker-0.16.1.pre1 lib/rake_docker/tasks/build.rb