Sha256: a8f85b412c79ff9f57dd425a25b6363ad041c530598d6ff89fc89b9552ecff9e

Contents?: true

Size: 1.13 KB

Versions: 1

Compression:

Stored size: 1.13 KB

Contents

module Percheron
  module Actions
    class Build

      include Base

      def initialize(container, nocache: false)
        @container = container
        @nocache = nocache
      end

      def execute!
        results = []
        results << build!
        results.compact.empty? ? nil : container
      end

      private

        attr_reader :container, :nocache

        def build_opts
          {
            'dockerfile'  => container.dockerfile.basename.to_s,
            't'           => container.image_name,
            'forcerm'     => true,
            'nocache'     => nocache
          }
        end

        def build!
          in_working_directory(base_dir) do
            execute_pre_build_scripts!  unless container.pre_build_scripts.empty?
            $logger.info "Building '#{container.image_name}' image"
            Docker::Image.build_from_dir(base_dir, build_opts) do |out|
              $logger.debug '%s' % [ out.strip ]
            end
          end
        end

        def execute_pre_build_scripts!
          ExecLocal.new(container, container.pre_build_scripts, 'PRE build').execute!
        end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
percheron-0.6.4 lib/percheron/actions/build.rb