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