Class: Rake::Task

Inherits:
Object show all
Defined in:
lib/buildr/core/application.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#invoke(*args) ⇒ Object



461
462
463
464
# File 'lib/buildr/core/application.rb', line 461

def invoke(*args)
  task_args = TaskArguments.new(arg_names, args)
  invoke_with_call_chain(task_args, Thread.current[:rake_chain] || InvocationChain::EMPTY)
end

#invoke_with_call_chain(task_args, invocation_chain) ⇒ Object



466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
# File 'lib/buildr/core/application.rb', line 466

def invoke_with_call_chain(task_args, invocation_chain)
  new_chain = InvocationChain.append(self, invocation_chain)
  @lock.synchronize do
    if application.options.trace
      puts "** Invoke #{name} #{format_trace_flags}"
    end
    return if @already_invoked
    @already_invoked = true
    begin
      invoke_prerequisites(task_args, new_chain)
    rescue
      trace "Exception while invoking prerequisites of task #{self.inspect}"
      raise
    end
    begin
      old_chain, Thread.current[:rake_chain] = Thread.current[:rake_chain], new_chain
      execute(task_args) if needed?
    ensure
      Thread.current[:rake_chain] = nil
    end
  end
end