Tasks: detect cycles
This commit is contained in:
parent
12c29eb308
commit
70e0566647
1 changed files with 44 additions and 38 deletions
|
|
@ -230,7 +230,7 @@
|
|||
(let [task (tasks task-name)
|
||||
depends (:depends task)]
|
||||
(when (contains? processing task-name)
|
||||
(throw (Exception. (str "Cyclic task: " task-name))))
|
||||
(throw (ex-info (str "Cyclic task: " task-name) {})))
|
||||
(loop [deps (seq depends)]
|
||||
(let [deps (remove #(contains? @processed %) deps)
|
||||
order (vec (mapcat #(target-order tasks % processed (conj processing task-name)) deps))]
|
||||
|
|
@ -261,11 +261,17 @@
|
|||
requires (get tasks :requires)
|
||||
init (get tasks :init)
|
||||
prog (if-let [depends (when m? (:depends task))]
|
||||
(let [targets (target-order tasks task-name)
|
||||
(let [[targets error]
|
||||
(try [(target-order tasks task-name)]
|
||||
(catch clojure.lang.ExceptionInfo e
|
||||
[nil (ex-message e)]))
|
||||
#_#_dependees (tasks->dependees targets tasks)
|
||||
task-map (cond-> {}
|
||||
enter (assoc :enter enter)
|
||||
leave (assoc :leave leave))]
|
||||
(if error
|
||||
[(binding [*out* *err*]
|
||||
(println error)) 1]
|
||||
(loop [prog ""
|
||||
targets (seq targets)
|
||||
done []
|
||||
|
|
@ -301,7 +307,7 @@
|
|||
requires (concat requires (:requires task))]
|
||||
[[(format-task init extra-paths extra-deps requires prog)] nil])
|
||||
[(binding [*out* *err*]
|
||||
(println "No such task:" t)) 1])))))
|
||||
(println "No such task:" t)) 1]))))))
|
||||
[[(format-task
|
||||
init
|
||||
(:extra-paths task)
|
||||
|
|
|
|||
Loading…
Reference in a new issue