class Bricolage::Script

Public Class Methods

new() click to toggle source
# File lib/bricolage/script.rb, line 9
def initialize
  @tasks = []
  @in_task_block = false
end

Public Instance Methods

bind(ctx, vars) click to toggle source
# File lib/bricolage/script.rb, line 27
def bind(ctx, vars)
  raise "[BUG] unresolved variables given" unless vars.resolved?
  @tasks.each do |task|
    task.bind(ctx, vars)
  end
end
run() click to toggle source
# File lib/bricolage/script.rb, line 44
def run
  result = nil
  @tasks.each do |task|
    result = task.run
  end
  result || JobResult.success
end
run_explain() click to toggle source
# File lib/bricolage/script.rb, line 52
def run_explain
  @tasks.each do |task|
    if task.respond_to?(:run_explain)
      task.run_explain
    else
      puts "-- task #{task.class} does not support explain; show source"
      puts task.source
    end
  end
end
source() click to toggle source
# File lib/bricolage/script.rb, line 34
def source
  buf = StringIO.new
  first = true
  @tasks.each do |task|
    buf.puts unless first; first = false
    buf.puts task.source
  end
  buf.string
end
task(ds) { |task| ... } click to toggle source
# File lib/bricolage/script.rb, line 14
def task(ds)
  raise FatalError, "nested task is not supported" if @in_task_block
  raise ParameterError, "no data source" unless ds
  @in_task_block = true
  begin
    task = ds.new_task
    yield task
    @tasks.push task
  ensure
    @in_task_block = false
  end
end