diff --git a/src/babashka/main.clj b/src/babashka/main.clj index c63d95d9..c30151c8 100644 --- a/src/babashka/main.clj +++ b/src/babashka/main.clj @@ -166,7 +166,7 @@ Use -- to separate script command line args from bb command line args. task-key :task} (decode-task task)] (if-let [help-text (:doc task)] [(println help-text) 0] - (if-let [main (when (= :main task-key) + (if-let [main (when (= 'main task-key) (first args))] (let [main (if (simple-symbol? main) (symbol (str main) "-main") @@ -450,7 +450,7 @@ Use -- to separate script command line args from bb command line args. key? (when fst (str/starts-with? fst ":")) keys (when key? (rest (str/split fst #":"))) expanded (when (and key? (> (count keys) 1)) - (into [:do] (map (comp vector keyword) keys))) + (into ['do] (map (comp vector keyword) keys))) k (when (and key? (not expanded)) (keyword (first keys))) bb-edn @bb-edn @@ -603,10 +603,10 @@ Use -- to separate script command line args from bb command line args. (let [{:keys [:task :opts :args]} (decode-task task)] opts ;; not used (case task - :babashka + babashka (let [cmd-line-args args] (parse-opts (seq (map str (concat cmd-line-args command-line-args))))) - :shell + shell (let [args (if (and (= 1 (count args)) (string? (first args))) (p/tokenize (first args)) @@ -617,11 +617,11 @@ Use -- to separate script command line args from bb command line args. (-> (p/process args {:inherit true}) deref :exit)])}) - :main + main (let [main-arg (first args) cmd-line-args (rest args)] (parse-opts (seq (map str (concat ["--main" main-arg] cmd-line-args command-line-args))))) - :do + do {:do (map #(resolve-task tasks % nil) args)} ;; default (if-let [t (get tasks task)] diff --git a/test/babashka/bb_edn_test.clj b/test/babashka/bb_edn_test.clj index 0c2be328..cef5bdec 100644 --- a/test/babashka/bb_edn_test.clj +++ b/test/babashka/bb_edn_test.clj @@ -1,5 +1,4 @@ (ns babashka.bb-edn-test - {:clj-kondo/config '{:linters {:unresolved-symbol {:exclude [working?]}}}} (:require [babashka.fs :as fs] [babashka.test-utils :as test-utils] @@ -32,21 +31,21 @@ (bb "doc" :sum))))) (deftest babashka-task-test - (with-config {:tasks {:sum [:babashka "-e" "(+ 1 2 3)"]}} + (with-config {:tasks {:sum ['babashka "-e" "(+ 1 2 3)"]}} (let [res (bb :sum)] (is (= 6 res))))) (deftest shell-task-test (let [temp-dir (fs/create-temp-dir) temp-file (fs/create-file (fs/path temp-dir "temp-file.txt"))] - (with-config {:tasks {:clean [:shell "rm" (str temp-file)]}} + (with-config {:tasks {:clean ['shell "rm" (str temp-file)]}} (is (fs/exists? temp-file)) (bb :clean) (is (not (fs/exists? temp-file))))) (let [temp-dir (fs/create-temp-dir) temp-file (fs/create-file (fs/path temp-dir "temp-file.txt"))] (testing "tokenization" - (with-config {:tasks {:clean [:shell (str "rm " (str temp-file))]}} + (with-config {:tasks {:clean ['shell (str "rm " (str temp-file))]}} (is (fs/exists? temp-file)) (bb :clean) (is (not (fs/exists? temp-file))))))) @@ -55,9 +54,9 @@ (testing ":and-do" (let [temp-dir (fs/create-temp-dir) temp-file (fs/create-file (fs/path temp-dir "temp-file.txt"))] - (with-config {:tasks {:sum [:babashka "-e" "(+ 1 2 3)"] - :all [:do - [:shell "rm" (str temp-file)] + (with-config {:tasks {:sum ['babashka "-e" "(+ 1 2 3)"] + :all ['do + ['shell "rm" (str temp-file)] [:sum]]}} (is (fs/exists? temp-file)) (let [res (bb :all)] @@ -66,42 +65,42 @@ #_(testing ":and-do shortcut" (let [temp-dir (fs/create-temp-dir) temp-file (fs/create-file (fs/path temp-dir "temp-file.txt"))] - (with-config {:tasks {:clean [:shell :clean:sum] - :sum [:babashka "-e" "(+ 1 2 3)"] - :all [:babashka :clean:sum]}} + (with-config {:tasks {:clean [shell :clean:sum] + :sum [babashka "-e" "(+ 1 2 3)"] + :all [babashka :clean:sum]}} (is (fs/exists? temp-file)) (let [res (bb :clean:sum)] (is (= 6 res))) (is (not (fs/exists? temp-file))))))) - #_(testing ":do always continuing" - (with-config {:tasks {:sum-1 [:babashka "-e" "(do (+ 4 5 6) nil)"] - :sum-2 [:babashka "-e" "(+ 1 2 3)"] - :all [:babashka :sum-1:sum2]}} + #_(testing "'do always continuing" + (with-config {:tasks {:sum-1 [babashka "-e" "(do (+ 4 5 6) nil)"] + :sum-2 [babashka "-e" "(+ 1 2 3)"] + :all [babashka :sum-1:sum2]}} (is (= 6 (bb :all)))) - #_(with-config {:tasks {:div-by-zero [:babashka "-e" "(/ 1 0)"] - :sum [:babashka "-e" "(+ 1 2 3)"] - :all[:babashka :div-by-zero:sum] }} + #_(with-config {:tasks {:div-by-zero [babashka "-e" "(/ 1 0)"] + :sum [babashka "-e" "(+ 1 2 3)"] + :all[babashka :div-by-zero:sum] }} (is (= 6 (bb :all))))) (testing "task fails when one of subtask fails" - (with-config {:tasks {:div-by-zero [:babashka "-e" "(/ 1 0)"] - :sum [:babashka "-e" "(+ 1 2 3)"] - :all [:babashka :div-by-zero:sum]}} + (with-config {:tasks {:div-by-zero ['babashka "-e" "(/ 1 0)"] + :sum ['babashka "-e" "(+ 1 2 3)"] + :all ['babashka :div-by-zero:sum]}} (is (thrown-with-msg? Exception #"Divide" (bb :all))))) #_(testing ":or-do short-cutting" - (with-config {:tasks {:sum-1 [:babashka "-e" "(+ 1 2 3)"] - :sum-2 [:babashka "-e" "(+ 4 5 6)"] + (with-config {:tasks {:sum-1 [babashka "-e" "(+ 1 2 3)"] + :sum-2 [babashka "-e" "(+ 4 5 6)"] :all [:or [:sum1] [:sum2]]}} (is (= 6 (bb :all))))) #_(testing ":or-do succeeding after failing" - (with-config {:tasks {:div-by-zero [:babashka "-e" "(/ 1 0)"] - :sum [:babashka "-e" "(+ 1 2 3)"] - :all [:babashka [:or [:div-by-zero] [:sum]]]}} + (with-config {:tasks {:div-by-zero [babashka "-e" "(/ 1 0)"] + :sum [babashka "-e" "(+ 1 2 3)"] + :all [babashka [:or [:div-by-zero] [:sum]]]}} (is (= 6 (bb :all)))))) (deftest prioritize-user-task-test (is (map? (bb "describe"))) - (with-config {:tasks {:describe [:babashka "-e" "(+ 1 2 3)"]}} + (with-config {:tasks {:describe ['babashka "-e" "(+ 1 2 3)"]}} (is (= 6 (bb :describe))))) (deftest doc-task-test @@ -110,7 +109,7 @@ Addition is a pretty advanced topic. Let us start with the identity element 0. ..." - :task [:babashka "-e" "(+ 1 2 3)"]}}} + :task ['babashka "-e" "(+ 1 2 3)"]}}} (is (str/includes? (apply test-utils/bb nil (map str ["doc" :cool-task])) "Usage: bb :cool-task")))) @@ -125,14 +124,14 @@ Addition is a pretty advanced topic. Let us start with the identity element 0. ..."} - :task [:babashka "-e" "(+ 1 2 3)"] + :task ['babashka "-e" "(+ 1 2 3)"] :cool-task-2 {:description "Return the sum of 4, 5 and 6." :doc "Usage: bb :cool-task Addition is a pretty advanced topic. Let us start with the identity element 0. ..." - :task [:babashka "-e" "(+ 4 5 6)"]}}} + :task ['babashka "-e" "(+ 4 5 6)"]}}} (let [res (test-utils/bb nil "tasks")] (is (str/includes? res "The following tasks are available:")) (is (str/includes? res ":task-1 Return the")) @@ -140,7 +139,7 @@ Addition is a pretty advanced topic. Let us start with the identity element (deftest main-task-test (with-config {:paths ["test-resources/task_scripts"] - :tasks {:main-task [:main 'tasks 1 2 3]}} + :tasks {:main-task ['main 'tasks 1 2 3]}} (is (= '("1" "2" "3") (bb :main-task))) (let [res (apply test-utils/bb nil (map str ["doc" :main-task]))]