Guest User

Untitled

a guest
Aug 19th, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Nim 1.80 KB | None | 0 0
  1.    
  2.  
  3. import strformat, strutils, tables
  4. type Task = object
  5.   requires*: seq[string]
  6.   actions*: string
  7.   name*: string
  8.  
  9. proc `$`(this: Task): string =
  10.   return fmt("Task {this.name} Requirements: {this.requires} , actions {this.actions}")
  11.  
  12. type Bake = ref object of RootObj
  13.   tasks* : TableRef[string, Task]
  14.  
  15.  
  16. proc addTask*(this: Bake, taskname: string, deps: seq[string], actions:string) : void =
  17.   var t =  Task(name:taskname, requires:deps, actions:actions)
  18.   this.tasks.add(taskname, t)
  19.  
  20. proc runTaskHelper(this: Bake, taskname: string, deps: var seq[string]) : void
  21.  
  22. proc runTask*(this: Bake, taskname: string): void =
  23.   var deps = newSeq[string]()
  24.   this.runTaskHelper(taskname, deps)        
  25.   for tsk in deps:
  26.       let t = this.tasks.getOrDefault(tsk)
  27.       echo(t.actions)
  28.  
  29.  
  30.  
  31. proc runTaskHelper(this: Bake, taskname: string, deps: var seq[string]) : void =
  32.   var tsk = this.tasks.getOrDefault(taskname)
  33.   echo "TASK IN RUNTASKHELPER: " & $tsk & " DEPS NOW" & $deps
  34.   if len(tsk.requires) > 0:
  35.     for c in tsk.requires:
  36.       echo "C NOW IS  " & c
  37.       this.runTaskHelper(c, deps)
  38.   else:
  39.     deps.add(taskname)
  40.     echo "T ADDING TASK TO DEPS SK: " & $tsk & " DEPS: " & $deps
  41.  
  42.  
  43. proc main() =
  44.   var b = new Bake
  45.   b.tasks = newTable[string, Task]()
  46.  
  47.   b.add_task("publish", @["build-release"], "print publish")
  48.   b.add_task("build-release", @["nim-installed"], "print exec command to build release mode")
  49.   b.add_task("nim-installed", @["curl-installed", "bash-installed"], "print curl LINK | bash")
  50.   b.add_task("curl-installed", @["apt-installed"], "apt-get install curl")
  51.   b.add_task("bash-installed", @["apt-installed"], "apt-get install bash")
  52.   b.add_task("apt-installed", @[], "code to install apt...")
  53.   b.run_task("publish")
  54.  
  55. when isMainModule:
  56.   main()
Advertisement
Add Comment
Please, Sign In to add comment