Method: Abid::RakeExtensions::Task#async_invoke_with_prerequisites

Defined in:
lib/abid/rake_extensions/task.rb

#async_invoke_with_prerequisites(task_args, invocation_chain) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/abid/rake_extensions/task.rb', line 46

def async_invoke_with_prerequisites(task_args, invocation_chain)
  application.trace "** Invoke #{name_with_params}" if application.options.trace

  volatiles, non_volatiles = prerequisite_tasks.partition(&:volatile?)

  async_invoke_tasks(non_volatiles, task_args, invocation_chain) do |updated|
    if state.successed? && !updated
      application.trace "** Skip #{name_with_params}" if application.options.trace
      state.ivar.try_set(false)
    else
      async_invoke_tasks(volatiles, task_args, invocation_chain) do
        async_execute_with_session(task_args)
      end
    end
  end
end