module Mybot::Tasks

Public Instance Methods

find_task(name) click to toggle source
# File lib/mybot/tasks.rb, line 49
def find_task(name)
  parts = name.split ":"
  task = parts.pop
  ns = parts.join ":"

  tasks.find do |t|
    t[:name] == task && (t[:namespace] == ns || t[:namespace].nil?)
  end
end
namespace(name) { || ... } click to toggle source
# File lib/mybot/tasks.rb, line 9
def namespace(name)
  outer_ns, @namespace = @namespace, name.to_s
  if outer_ns && outer_ns != ""
    @namespace = "#{outer_ns}:#{@namespace}"
  end

  yield
ensure
  @namespace = outer_ns
end
run_task(name, options) click to toggle source
# File lib/mybot/tasks.rb, line 59
def run_task(name, options)
  task = find_task(name)

  unless task
    print_cmd! "error", "cannot find task '#{name}'", :red, :bold
    abort
  end

  print_cmd! "task", name, :cyan, :bold

  task[:deps].each do |d|
    run_task(d, options)
  end

  task[:block].call(options)
end
task(name, &block) click to toggle source
# File lib/mybot/tasks.rb, line 20
def task(name, &block)
  name, deps = *case name
  when Hash
    name.shift
  else
    [name, []]
  end

  deps = Array(deps).map do |d|
    case d
    when Symbol
      "#{@namespace}:#{d}"
    when String
      d.include?(":") ? d : "#{@namespace}:#{d}"
    end
  end.uniq

  task = tasks.find do |t|
    t[:name] == name.to_s && t[:namespace] == @namespace
  end

  tasks.push({
    :name => name.to_s,
    :namespace => @namespace,
    :deps => deps,
    :block => block
  }) unless task
end
tasks() click to toggle source
# File lib/mybot/tasks.rb, line 5
            def tasks
  @tasks ||= []
end