Mercurial > lcfOS
diff python/ppci/tasks.py @ 329:8f6f3ace4e78
Added build tasks
author | Windel Bouwman |
---|---|
date | Wed, 05 Feb 2014 21:29:31 +0100 |
parents | |
children | 87feb8a23b4d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/python/ppci/tasks.py Wed Feb 05 21:29:31 2014 +0100 @@ -0,0 +1,46 @@ + +class TaskError(Exception): + pass + + +class Task: + """ Task that can run, and depend on other tasks """ + def __init__(self, name): + self.name = name + self.subtasks = [] + self.completed = False + self.dependencies = [] + + def run(self): + raise NotImplementedError("Implement this abstract method!") + + def fire(self): + assert all(t.completed for t in self.dependencies) + self.run() + self.completed = True + + def addSubTask(self, tsk): + self.subtasks.append(tsk) + return tsk + + def addDependency(self, task): + self.dependencies.append(task) + return task + + +class TaskRunner: + def __init__(self): + self.task_list = [] + + def add_task(self, task): + self.task_list.append(task) + + def run_tasks(self): + try: + for t in self.task_list: + #print('Running {}'.format(t.name)) + t.fire() + except TaskError as e: + print('Error: {}'.format(e)) + return 1 + return 0