Guest User

Untitled

a guest
Aug 19th, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.05 KB | None | 0 0
  1.  
  2. from collections import defaultdict, deque
  3.    
  4. class Task:
  5.     def __init__(self, name, requires, actions):
  6.         self.requires = requires
  7.         self.actions = actions
  8.         self.name = name
  9.  
  10.     def __str__(self):
  11.         print("Actions.. : ", self.actions)
  12.  
  13. class Bake:
  14.     def __init__(self):
  15.         self._tasks = {}
  16.    
  17.     def add_task(self, taskname, deps, actions):
  18.         self._tasks[taskname] = Task(taskname, deps, actions)
  19.  
  20.     def _run_task(self, taskname, taskqueue):
  21.         tsk = self._tasks[taskname]
  22.         for c in tsk.requires:
  23.             self._run_task(c, taskqueue)
  24.         else:
  25.             taskqueue.append(taskname)
  26.  
  27.     def run_task(self, taskname):
  28.         depsq = []
  29.         self._run_task(taskname, depsq)        
  30.  
  31.         print(depsq)
  32.         for tsk in depsq:
  33.             t = self._tasks[tsk]
  34.             print(t.actions)
  35.  
  36.     def _run_task_cache(self, taskname, taskqueue):
  37.         tsk = self._tasks[taskname]
  38.         for c in tsk.requires:
  39.             self._run_task_cache(c, taskqueue)
  40.         else:
  41.             print("TASK NAME: ", taskname, " QUEUE: ", taskqueue)
  42.             if taskname not in taskqueue:
  43.                 taskqueue.append(taskname)
  44.  
  45.     def run_task_cache(self, taskname):
  46.         depsq = []
  47.         self._run_task_cache(taskname, depsq)        
  48.  
  49.         print(depsq)
  50.         for tsk in depsq:
  51.             t = self._tasks[tsk]
  52.             print(t.actions)
  53.  
  54.  
  55. def main():
  56.     b = Bake()
  57.  
  58.     b.add_task("publish", ["build-release"], "print publish")
  59.     b.add_task("build-release", ["nim-installed"], "print exec command to build release mode")
  60.     b.add_task("nim-installed", ["curl-installed", "bash-installed"], "print curl LINK | bash")
  61.     b.add_task("curl-installed", ['apt-installed'], "apt-get install curl")
  62.     b.add_task("bash-installed", ['apt-installed'], "apt-get install bash")
  63.     b.add_task("apt-installed", [], "code to install apt...")
  64.     print(b.run_task("publish"))
  65.  
  66.     print(b.run_task_cache("publish"))
  67.  
  68. if __name__ == '__main__':
  69.     main()
Advertisement
Add Comment
Please, Sign In to add comment