Class: Tumugi::TaskDefinition

Inherits:
Object
  • Object
show all
Includes:
Mixin::Listable, Mixin::TaskHelper
Defined in:
lib/tumugi/task_definition.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Mixin::TaskHelper

#target

Methods included from Mixin::Listable

#list

Constructor Details

#initialize(id, opts = {}) ⇒ TaskDefinition

Returns a new instance of TaskDefinition.



21
22
23
24
25
26
27
# File 'lib/tumugi/task_definition.rb', line 21

def initialize(id, opts={})
  @id = id
  @opts = { type: Tumugi::Task }.merge(opts)
  @params = {}
  @param_defaults = {}
  define_parent_parameter_methods
end

Instance Attribute Details

#idObject (readonly)

Returns the value of attribute id.



19
20
21
# File 'lib/tumugi/task_definition.rb', line 19

def id
  @id
end

#optsObject (readonly)

Returns the value of attribute opts.



19
20
21
# File 'lib/tumugi/task_definition.rb', line 19

def opts
  @opts
end

Class Method Details

.define(id, opts = {}, &block) ⇒ Object



12
13
14
15
16
17
# File 'lib/tumugi/task_definition.rb', line 12

def self.define(id, opts={}, &block)
  td = Tumugi::TaskDefinition.new(id, opts)
  td.instance_eval(&block) if block_given?
  Tumugi.workflow.add_task(id, td)
  td
end

Instance Method Details

#instanceObject



29
30
31
# File 'lib/tumugi/task_definition.rb', line 29

def instance
  @task ||= create_task
end

#output(outputs = [], &block) ⇒ Object



59
60
61
# File 'lib/tumugi/task_definition.rb', line 59

def output(outputs=[], &block)
  @outputs ||= (block || outputs)
end

#output_eval(task) ⇒ Object



67
68
69
# File 'lib/tumugi/task_definition.rb', line 67

def output_eval(task)
  @out ||= @outputs.is_a?(Proc) ? task.instance_eval(&@outputs) : @outputs
end

#param(name, opts = {}) ⇒ Object



33
34
35
36
# File 'lib/tumugi/task_definition.rb', line 33

def param(name, opts={})
  define_parameter_method(name)
  @params[name] = opts
end

#param_auto_bind_enabled(v) ⇒ Object



51
52
53
# File 'lib/tumugi/task_definition.rb', line 51

def param_auto_bind_enabled(v)
  @param_auto_bind_enabled = v
end

#param_set(name, value = nil, &block) ⇒ Object



46
47
48
49
# File 'lib/tumugi/task_definition.rb', line 46

def param_set(name, value=nil, &block)
  Tumugi::Logger.instance.warn("'param_set' is deprecated and will be removed in a future release. Use 'set' instead.")
  set(name, value, &block)
end

#parent_task_classObject



79
80
81
82
83
84
85
# File 'lib/tumugi/task_definition.rb', line 79

def parent_task_class
  if @opts[:type].is_a?(Class)
    @opts[:type]
  else
    Tumugi::Plugin.lookup_task(@opts[:type])
  end
end

#required_tasksObject



71
72
73
# File 'lib/tumugi/task_definition.rb', line 71

def required_tasks
  @required_tasks
end

#requires(tasks) ⇒ Object



55
56
57
# File 'lib/tumugi/task_definition.rb', line 55

def requires(tasks)
  @required_tasks = tasks
end

#run(&block) ⇒ Object



63
64
65
# File 'lib/tumugi/task_definition.rb', line 63

def run(&block)
  @run = block
end

#run_block(task) ⇒ Object



75
76
77
# File 'lib/tumugi/task_definition.rb', line 75

def run_block(task)
  task.instance_eval(&@run)
end

#set(name, value = nil, &block) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/tumugi/task_definition.rb', line 38

def set(name, value=nil, &block)
  if block_given?
    @param_defaults[name] = block
  else
    @param_defaults[name] = value
  end
end