Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from collections import defaultdict, deque
- class Task:
- def __init__(self, name, requires, actions):
- self.requires = requires
- self.actions = actions
- self.name = name
- def __str__(self):
- print("Actions.. : ", self.actions)
- class Bake:
- def __init__(self):
- self._tasks = {}
- def add_task(self, taskname, deps, actions):
- self._tasks[taskname] = Task(taskname, deps, actions)
- def _run_task(self, taskname, taskqueue):
- tsk = self._tasks[taskname]
- for c in tsk.requires:
- self._run_task(c, taskqueue)
- else:
- taskqueue.append(taskname)
- def run_task(self, taskname):
- depsq = []
- self._run_task(taskname, depsq)
- print(depsq)
- for tsk in depsq:
- t = self._tasks[tsk]
- print(t.actions)
- def _run_task_cache(self, taskname, taskqueue):
- tsk = self._tasks[taskname]
- for c in tsk.requires:
- self._run_task_cache(c, taskqueue)
- else:
- print("TASK NAME: ", taskname, " QUEUE: ", taskqueue)
- if taskname not in taskqueue:
- taskqueue.append(taskname)
- def run_task_cache(self, taskname):
- depsq = []
- self._run_task_cache(taskname, depsq)
- print(depsq)
- for tsk in depsq:
- t = self._tasks[tsk]
- print(t.actions)
- def main():
- b = Bake()
- b.add_task("publish", ["build-release"], "print publish")
- b.add_task("build-release", ["nim-installed"], "print exec command to build release mode")
- b.add_task("nim-installed", ["curl-installed", "bash-installed"], "print curl LINK | bash")
- b.add_task("curl-installed", ['apt-installed'], "apt-get install curl")
- b.add_task("bash-installed", ['apt-installed'], "apt-get install bash")
- b.add_task("apt-installed", [], "code to install apt...")
- print(b.run_task("publish"))
- print(b.run_task_cache("publish"))
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment