Sha256: 010ee2b5642a40a073ba77d4d4b848b9ba0d3eae9778149aecda893a1d26fbd2

Contents?: true

Size: 1.03 KB

Versions: 7

Compression:

Stored size: 1.03 KB

Contents

require 'construi/config'
require 'construi/container'
require 'construi/image'
require 'construi/version'

require 'docker'
require 'yaml'

module Construi

  class Runner
    def initialize(config)
      @config = config
    end

    def run(targets)
      puts "Construi version: #{Construi::VERSION}"

      docker_host = ENV['DOCKER_HOST']
      Docker.url = docker_host unless docker_host.nil?

      puts "Docker url: #{Docker.url}"
      puts "Current directory: #{Dir.pwd}"

      Docker.validate_version!
      Docker.options[:read_timeout] = 60
      Docker.options[:chunk_size] = 8

      initial_image = Image.create(@config.image) { |s| puts s }

      commands = targets.map { |t| @config.target(t).commands }.flatten

      final_image = commands.reduce(IntermediateImage.seed(initial_image)) do |image, command|
        puts "Running command: #{command}"
        image.run(command, @config.env)
      end

      final_image.delete
    end
  end

  def self.run(targets)
    Runner.new(Config.load('construi.yml')).run(targets)
  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
construi-0.25.0 lib/construi.rb
construi-0.23.0 lib/construi.rb
construi-0.21.0 lib/construi.rb
construi-0.19.0 lib/construi.rb
construi-0.8.0 lib/construi.rb
construi-0.7.0 lib/construi.rb
construi-0.6.0 lib/construi.rb