Method: Tap::Declarations#task

Defined in:
lib/tap/declarations.rb

#task(const_name, configs = {}, baseclass = @baseclass, &block) ⇒ Object



115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/tap/declarations.rb', line 115

def task(const_name, configs={}, baseclass=@baseclass, &block)
  @desc ||= Lazydoc.register_caller(Description)
  const_name, prerequisites = parse_prerequisites(const_name)

  if prerequisites.nil?
    return declare(baseclass, const_name, configs, &block)
  end

  tasc = declare(Tap::Workflow, const_name, configs) do |workflow|
    psr = Parser.new
    args = psr.parse!(prerequisites)
    warn "ignoring args: #{args.inspect}" unless args.empty?
    psr.build_to(app)
    
    obj = init("#{const_name.to_s.underscore}/task", workflow.config.to_hash)
    setup = lambda {|input| exe(obj, input) }
    
    [setup, obj]
  end

  namespace(const_name) do
    declare(baseclass, 'Task', configs, &block)
  end

  tasc
end