class Taskr::TaskManager

Public Class Methods

new() click to toggle source
# File lib/taskr/task_manager.rb, line 5
def initialize
  @data = {}
end

Public Instance Methods

register(task, deps=[]) click to toggle source
# File lib/taskr/task_manager.rb, line 9
def register(task, deps=[])
  raise ArgumentError.new('Can register only instances of Taskr::Task') unless task.is_a? Task
  @data[task.name] = {:task => task, :deps => deps}
  true
end
run(task_name) click to toggle source
# File lib/taskr/task_manager.rb, line 19
def run(task_name)
  task_record = find_by_name(task_name)
  task_record[:deps].each { |task_dep_name| run(task_dep_name) }
  task_record[:task].run
end
tasks() click to toggle source
# File lib/taskr/task_manager.rb, line 15
def tasks
  @data.values.map {|task_record| task_record[:task]}
end

Private Instance Methods

find_by_name(task_name) click to toggle source
# File lib/taskr/task_manager.rb, line 27
def find_by_name(task_name)
  task = @data.fetch(task_name, nil)
  raise TaskNotFoundError.new("Task with name #{task_name} could not be found") if task.nil?
  task
end