[#810] Support :extra-paths and :extra-deps in tasks
This commit is contained in:
parent
75ffb3867d
commit
514fc84cde
3 changed files with 38 additions and 4 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
(ns babashka.impl.tasks
|
(ns babashka.impl.tasks
|
||||||
(:require [babashka.impl.common :refer [bb-edn]]
|
(:require [babashka.impl.classpath :as cp]
|
||||||
|
[babashka.impl.common :refer [bb-edn]]
|
||||||
[babashka.impl.deps :as deps]
|
[babashka.impl.deps :as deps]
|
||||||
[babashka.process :as p]
|
[babashka.process :as p]
|
||||||
[clojure.java.io :as io]
|
[clojure.java.io :as io]
|
||||||
|
|
@ -181,8 +182,11 @@
|
||||||
prog (wrap-def task-name prog parallel? last? log-level)]
|
prog (wrap-def task-name prog parallel? last? log-level)]
|
||||||
prog)))))
|
prog)))))
|
||||||
|
|
||||||
(defn format-task [init requires prog]
|
(defn format-task [init extra-paths extra-deps requires prog]
|
||||||
(format "
|
(format "
|
||||||
|
%s ;; extra-paths
|
||||||
|
%s ;; extra-deps
|
||||||
|
|
||||||
(ns %s %s)
|
(ns %s %s)
|
||||||
(require '[babashka.tasks])
|
(require '[babashka.tasks])
|
||||||
(when-not (resolve 'clojure)
|
(when-not (resolve 'clojure)
|
||||||
|
|
@ -194,6 +198,12 @@
|
||||||
|
|
||||||
%s
|
%s
|
||||||
%s"
|
%s"
|
||||||
|
(if (seq extra-paths)
|
||||||
|
(format "(babashka.classpath/add-classpath \"%s\")" (str/join cp/path-sep extra-paths))
|
||||||
|
"")
|
||||||
|
(if (seq extra-deps)
|
||||||
|
(format "(babashka.deps/add-deps '%s)" (pr-str {:deps extra-deps}))
|
||||||
|
"")
|
||||||
(gensym "user")
|
(gensym "user")
|
||||||
(if (seq requires)
|
(if (seq requires)
|
||||||
(format "(:require %s)" (str/join " " requires))
|
(format "(:require %s)" (str/join " " requires))
|
||||||
|
|
@ -228,6 +238,8 @@
|
||||||
(let [targets (target-order tasks task-name)]
|
(let [targets (target-order tasks task-name)]
|
||||||
(loop [prog ""
|
(loop [prog ""
|
||||||
targets (seq targets)
|
targets (seq targets)
|
||||||
|
extra-paths []
|
||||||
|
extra-deps nil
|
||||||
requires requires]
|
requires requires]
|
||||||
(let [t (first targets)
|
(let [t (first targets)
|
||||||
targets (next targets)]
|
targets (next targets)]
|
||||||
|
|
@ -235,6 +247,8 @@
|
||||||
(if-let [task (get tasks t)]
|
(if-let [task (get tasks t)]
|
||||||
(recur (str prog "\n" (assemble-task-1 t task log-level parallel?))
|
(recur (str prog "\n" (assemble-task-1 t task log-level parallel?))
|
||||||
targets
|
targets
|
||||||
|
(concat extra-paths (:extra-paths task))
|
||||||
|
(merge extra-deps (:extra-deps task))
|
||||||
(concat requires (:requires task)))
|
(concat requires (:requires task)))
|
||||||
[(binding [*out* *err*]
|
[(binding [*out* *err*]
|
||||||
(println "No such task:" task-name)) 1])
|
(println "No such task:" task-name)) 1])
|
||||||
|
|
@ -243,12 +257,16 @@
|
||||||
(apply str (map deref-task depends))
|
(apply str (map deref-task depends))
|
||||||
"\n"
|
"\n"
|
||||||
(assemble-task-1 t task log-level parallel? true))
|
(assemble-task-1 t task log-level parallel? true))
|
||||||
|
extra-paths (concat extra-paths (:extra-paths task))
|
||||||
|
extra-deps (merge extra-deps (:extra-deps task))
|
||||||
requires (concat requires (:requires task))]
|
requires (concat requires (:requires task))]
|
||||||
[[(format-task init requires prog)] nil])
|
[[(format-task init extra-paths extra-deps requires prog)] nil])
|
||||||
[(binding [*out* *err*]
|
[(binding [*out* *err*]
|
||||||
(println "No such task:" task-name)) 1])))))
|
(println "No such task:" task-name)) 1])))))
|
||||||
[[(format-task
|
[[(format-task
|
||||||
init
|
init
|
||||||
|
(:extra-paths task)
|
||||||
|
(:extra-deps task)
|
||||||
(concat requires (:requires task))
|
(concat requires (:requires task))
|
||||||
(assemble-task-1 task-name task log-level parallel? true))] nil])]
|
(assemble-task-1 task-name task log-level parallel? true))] nil])]
|
||||||
(when (= "true" (System/getenv "BABASHKA_DEV"))
|
(when (= "true" (System/getenv "BABASHKA_DEV"))
|
||||||
|
|
|
||||||
4
test-resources/task_test_scripts/task_test.clj
Normal file
4
test-resources/task_test_scripts/task_test.clj
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
(ns task-test)
|
||||||
|
|
||||||
|
(defn task-test-fn []
|
||||||
|
:task-test-fn)
|
||||||
|
|
@ -126,7 +126,19 @@
|
||||||
(test-utils/with-config {:paths ["test-resources/task_scripts"]
|
(test-utils/with-config {:paths ["test-resources/task_scripts"]
|
||||||
:tasks '{foo {:requires ([tasks :as t])
|
:tasks '{foo {:requires ([tasks :as t])
|
||||||
:task t/foo}}}
|
:task t/foo}}}
|
||||||
(is (= :foo (bb "run" "--prn" "foo"))))))
|
(is (= :foo (bb "run" "--prn" "foo")))))
|
||||||
|
(testing "extra-paths"
|
||||||
|
(test-utils/with-config {:paths ["test-resources/task_scripts"]
|
||||||
|
:tasks '{:requires ([tasks :as t])
|
||||||
|
foo {:extra-paths ["test-resources/task_test_scripts"]
|
||||||
|
:requires ([task-test :as tt])
|
||||||
|
:task tt/task-test-fn}}}
|
||||||
|
(is (= :task-test-fn (bb "run" "--prn" "foo")))))
|
||||||
|
(testing "extra-deps"
|
||||||
|
(test-utils/with-config {:tasks '{foo {:extra-deps {medley/medley {:mvn/version "1.3.0"}}
|
||||||
|
:requires ([medley.core :as m])
|
||||||
|
:task (m/index-by :id [{:id 1} {:id 2}])}}}
|
||||||
|
(is (= {1 {:id 1}, 2 {:id 2}} (bb "run" "--prn" "foo"))))))
|
||||||
|
|
||||||
(deftest list-tasks-test
|
(deftest list-tasks-test
|
||||||
(test-utils/with-config {}
|
(test-utils/with-config {}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue