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