4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/pallets/dsl/workflow.rb', line 4
def task(arg=nil, as: nil, depends_on: nil, max_failures: nil, **kwargs)
arg = !kwargs.empty? ? kwargs : arg
raise ArgumentError, 'Task is incorrectly defined. It must receive '\
'either a name, or a name => dependencies pair as '\
'the first argument' unless arg
klass, dependencies = case arg
when Hash
arg.first
else
[arg, depends_on]
end
task_class = klass.to_s
as ||= task_class
dependencies = Array(dependencies).compact.uniq.map(&:to_s)
graph.add(as, dependencies)
task_config[as] = {
'workflow_class' => self.name,
'task_class' => task_class,
'max_failures' => max_failures || Pallets.configuration.max_failures
}
nil
end
|