lib/buildem/runner.rb
require "buildem"
require 'buildem/base'
require 'buildem/configuration'
require 'buildem/executor'
require 'process_pool'
require 'buildem/logger'
module Kernel
def unordered
puts "Started unordered sequence"
yield
$pool = ProcessPool.new($configuration.workers)
puts $configuration.workers
$jobs.each do |command|
$pool.schedule(command,command.argz)
end
$pool.start
$pool.shutdown
puts "Finished #{$jobs.size} unordered jobs"
end
def queued_run(command, optz = {})
$jobs << BuildEm::Executor.new([command,optz])
end
def run(command, optz = {})
BuildEm::Executor.new([command,optz]).run
end
end
class BuildEm::Runner
$jobs = []
def initialize(kernel = Kernel, argv = ARGV)
@kernel = kernel
@argv = argv
end
def process_standard_in
if @argv.empty?
output = []
while input = @kernel.gets and not input == "start\n"
output << input
end
unless output.empty?
output = output.join("\n")
@kernel.eval(output)
end
end
end
def start
if ARGV.size == 1
begin
puts "running #{ARGV[0]}"
$configuration = BuildEm::Configuration.new
load ARGV[0]
ensure
puts "finished #{ARGV[0]}"
end
else
puts usage
end
end
private
def usage
<<-USAGE
-----------------------------------------------------------------
BUILD'EM
-----------------------------------------------------------------
usage: buildem filename.buildem
-----------------------------------------------------------------
USAGE
end
end