Fix parallel

This commit is contained in:
Michiel Borkent 2021-04-11 23:07:48 +02:00
parent da27843544
commit e1cfdc6e23

View file

@ -67,18 +67,25 @@
expr)) expr))
(defn wrap-def [task-name prog last?] (defn wrap-def [task-name prog last?]
(format "(def %s %s) %s" (format "(def %s (future %s)) %s"
task-name prog task-name prog
(if last? (if last?
(format "(babashka.tasks/-wait %s)" task-name) (format "(babashka.tasks/-wait %s)" task-name)
task-name))) task-name)))
(defn deref-task [dep]
(format "(babashka.tasks/-wait %s)" dep))
(defn wrap-depends [prog depends]
(format "(do %s)" (str (str/join "\n" (map deref-task depends)) "\n" prog)))
(defn assemble-task-1 (defn assemble-task-1
"Assembles task, does not process :depends." "Assembles task, does not process :depends."
([task-name task] (assemble-task-1 task-name task nil)) ([task-name task depends] (assemble-task-1 task-name task depends nil))
([task-name task last?] ([task-name task depends last?]
(cond (qualified-symbol? task) (cond (qualified-symbol? task)
(let [prog (format "(apply %s *command-line-args*)" task) (let [prog (format "(apply %s *command-line-args*)" task)
prog (wrap-depends prog depends)
prog (wrap-def task-name prog last?) prog (wrap-def task-name prog last?)
prog (format " prog (format "
(do (require (quote %s)) (do (require (quote %s))
@ -87,9 +94,10 @@
prog)] prog)]
prog) prog)
(map? task) (map? task)
(let [task (:task task)] (let [t (:task task)]
(assemble-task-1 task-name task last?)) (assemble-task-1 task-name t (:depends task) last?))
:else (wrap-def task-name task last?)))) :else (let [prog (wrap-depends task depends)]
(wrap-def task-name prog last?)))))
(defn format-task [init prog] (defn format-task [init prog]
(format " (format "
@ -112,9 +120,6 @@
(conj order task-name)) (conj order task-name))
order)))))) order))))))
(defn deref-task [dep]
(format "(babashka.tasks/-wait %s)" dep))
(defn assemble-task [task-name] (defn assemble-task [task-name]
(let [task-name (symbol task-name) (let [task-name (symbol task-name)
tasks (get @bb-edn :tasks) tasks (get @bb-edn :tasks)
@ -130,7 +135,7 @@
targets (next targets)] targets (next targets)]
(if targets (if targets
(if-let [task (get tasks t)] (if-let [task (get tasks t)]
(recur (str prog "\n" (assemble-task-1 t task)) (recur (str prog "\n" (assemble-task-1 t task depends))
targets) targets)
[(binding [*out* *err*] [(binding [*out* *err*]
(println "No such task:" task-name)) 1]) (println "No such task:" task-name)) 1])
@ -138,11 +143,13 @@
(let [prog (str prog "\n" (let [prog (str prog "\n"
(apply str (map deref-task depends)) (apply str (map deref-task depends))
"\n" "\n"
(assemble-task-1 t task true))] (assemble-task-1 t task depends true))]
[[(format-task init prog)] nil]) [[(format-task init prog)] nil])
[(binding [*out* *err*] [(binding [*out* *err*]
(println "No such task:" task-name)) 1]))))) (println "No such task:" task-name)) 1])))))
[[(format-task init (assemble-task-1 task-name task))] nil])] [[(format-task init (assemble-task-1 task-name task []))] nil])]
(when (= "true" (System/getenv "BABASHKA_DEV"))
(println (ffirst prog)))
prog) prog)
[(binding [*out* *err*] [(binding [*out* *err*]
(println "No such task:" task-name)) 1]))) (println "No such task:" task-name)) 1])))