Get rid of :when for now
This commit is contained in:
parent
6087b94d32
commit
45109685e1
2 changed files with 37 additions and 18 deletions
|
|
@ -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])))
|
||||||
|
|
|
||||||
|
|
@ -43,19 +43,36 @@
|
||||||
"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)))))
|
||||||
(test-utils/with-config {:tasks {'quux (list 'spit out "quux\n")
|
(fs/delete out)
|
||||||
'baz (list 'spit out "baz\n" :append true)
|
(testing "depends"
|
||||||
'bar {:depends ['baz]
|
(test-utils/with-config {:tasks {'quux (list 'spit out "quux\n")
|
||||||
:task (list 'spit out "bar\n" :append true)}
|
'baz (list 'spit out "baz\n" :append true)
|
||||||
'foo {:depends ['quux 'bar 'baz]
|
'bar {:depends ['baz]
|
||||||
:task (list 'spit out "foo\n" :append true)}}}
|
:task (list 'spit out "bar\n" :append true)}
|
||||||
(bb "foo")
|
'foo {:depends ['quux 'bar 'baz]
|
||||||
(is (= "quux\nbaz\nbar\nfoo\n" (slurp out))))))
|
:task (list 'spit out "foo\n" :append true)}}}
|
||||||
|
(bb "foo")
|
||||||
|
(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 {}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue