Get rid of :when for now

This commit is contained in:
Michiel Borkent 2021-04-10 16:50:20 +02:00
parent 6087b94d32
commit 45109685e1
2 changed files with 37 additions and 18 deletions

View file

@ -54,6 +54,11 @@
m [target-name deps]] m [target-name deps]]
(into {} (cons m (map #(depends-map tasks %) deps))))) (into {} (cons m (map #(depends-map tasks %) deps)))))
#_(defn wrap-when [expr when-expr]
(if when-expr
(format "(when %s %s)" (second when-expr) expr)
expr))
(defn assemble-task-1 (defn assemble-task-1
"Assembles task, does not process :depends." "Assembles task, does not process :depends."
[task] [task]
@ -68,16 +73,13 @@
(assemble-task-1 task)) (assemble-task-1 task))
:else task)) :else task))
(defn format-task [init when-expr prog] (defn format-task [init prog]
(format " (format "
(require '[babashka.tasks :refer [shell clojure]]) (require '[babashka.tasks :refer [shell clojure]])
%s %s
%s" %s"
(str init) (str init)
(if when-expr prog))
(format "(when %s %s)"
when-expr prog)
prog)))
(defn target-order (defn target-order
([tasks task-name] (target-order tasks task-name (volatile! #{}))) ([tasks task-name] (target-order tasks task-name (volatile! #{})))
@ -97,9 +99,9 @@
tasks (get @bb-edn :tasks) tasks (get @bb-edn :tasks)
task (get tasks task-name)] task (get tasks task-name)]
(if task (if task
(let [init (get tasks :init) (let [m? (map? task)
when-expr (get task :when) init (and m? (get tasks :init))
prog (if (:depends task) prog (if (and m? (:depends task))
(let [targets (target-order tasks task-name)] (let [targets (target-order tasks task-name)]
(loop [prog "" (loop [prog ""
targets (seq targets)] targets (seq targets)]
@ -109,8 +111,8 @@
(next targets)) (next targets))
[(binding [*out* *err*] [(binding [*out* *err*]
(println "No such task:" task-name)) 1]) (println "No such task:" task-name)) 1])
[[(format-task init when-expr prog)] nil]))) [[(format-task init prog)] nil])))
[[(format-task init when-expr (assemble-task-1 task))] nil])] [[(format-task init (assemble-task-1 task))] nil])]
prog) prog)
[(binding [*out* *err*] [(binding [*out* *err*]
(println "No such task:" task-name)) 1]))) (println "No such task:" task-name)) 1])))

View file

@ -43,11 +43,14 @@
"echo hello")}} "echo hello")}}
(bb "foo") (bb "foo")
(is (= "hello\n" (slurp out))))) (is (= "hello\n" (slurp out)))))
(fs/delete out)
(testing "clojure test" (testing "clojure test"
(test-utils/with-config {:tasks {'foo (list 'clojure {:out out} (test-utils/with-config {:tasks {'foo (list 'clojure {:out out}
"-M -e" "(println :yolo)")}} "-M -e" "(println :yolo)")}}
(bb "foo") (bb "foo")
(is (= ":yolo\n" (slurp out))))) (is (= ":yolo\n" (slurp out)))))
(fs/delete out)
(testing "depends"
(test-utils/with-config {:tasks {'quux (list 'spit out "quux\n") (test-utils/with-config {:tasks {'quux (list 'spit out "quux\n")
'baz (list 'spit out "baz\n" :append true) 'baz (list 'spit out "baz\n" :append true)
'bar {:depends ['baz] 'bar {:depends ['baz]
@ -55,7 +58,21 @@
'foo {:depends ['quux 'bar 'baz] 'foo {:depends ['quux 'bar 'baz]
:task (list 'spit out "foo\n" :append true)}}} :task (list 'spit out "foo\n" :append true)}}}
(bb "foo") (bb "foo")
(is (= "quux\nbaz\nbar\nfoo\n" (slurp out)))))) (is (= "quux\nbaz\nbar\nfoo\n" (slurp out)))))
(fs/delete out)
;; Note: this behavior with :when was complex, since the place where :when
;; is inserted isn't very intuitive here
;; This is why we don't support :when for now
#_(testing "depends with :when"
(test-utils/with-config {:tasks {'quux (list 'spit out "quux\n")
'baz (list 'spit out "baz\n" :append true)
'bar {:when false
:depends ['baz]
:task (list 'spit out "bar\n" :append true)}
'foo {:depends ['quux 'bar]
:task (list 'spit out "foo\n" :append true)}}}
(bb "foo")
(is (= "quux\nbaz\nbar\nfoo\n" (slurp out)))))))
(deftest list-tasks-test (deftest list-tasks-test
(test-utils/with-config {} (test-utils/with-config {}