Sha256: 56b43986d536c44eb4ff945c995dde1684cbaffcd64ba8b38754f7625fec20c4

Contents?: true

Size: 1.29 KB

Versions: 7

Compression:

Stored size: 1.29 KB

Contents

module Percheron
  module Actions
    class Build

      include Base

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

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

      private

        attr_reader :container, :nocache, :exec_scripts
        alias_method :exec_scripts?, :exec_scripts

        def options
          {
            '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!
            $logger.info "Building '#{container.image_name}' image"
            Docker::Image.build_from_dir(base_dir, options) do |out|
              $logger.debug '%s' % [ out.strip ]
            end
          end
        end

        def execute_pre_build_scripts!
          return nil if !exec_scripts? && container.pre_build_scripts.empty?
          ExecLocal.new(container, container.pre_build_scripts, 'PRE build').execute!
        end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
percheron-0.7.6 lib/percheron/actions/build.rb
percheron-0.7.5 lib/percheron/actions/build.rb
percheron-0.7.4 lib/percheron/actions/build.rb
percheron-0.7.3 lib/percheron/actions/build.rb
percheron-0.7.2 lib/percheron/actions/build.rb
percheron-0.7.1 lib/percheron/actions/build.rb
percheron-0.7.0 lib/percheron/actions/build.rb