From 1160f44d2288b5a1874a20f383d48430f7805a25 Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Wed, 17 Mar 2021 16:59:33 +0100 Subject: [PATCH] wip [skip ci] --- src/babashka/main.clj | 17 ++++++++--------- test-resources/bb.edn | 4 ++-- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/babashka/main.clj b/src/babashka/main.clj index 453b39e8..79249724 100644 --- a/src/babashka/main.clj +++ b/src/babashka/main.clj @@ -474,6 +474,13 @@ Use -- to separate script command line args from bb command line args. options) parsed (map parse-opts options)] {:do parsed}) + (":invoke") + {:exec-src + (pr-str `(do (if-let [f (requiring-resolve (symbol (first *command-line-args*)))] + (apply f (rest *command-line-args*)) + (throw (Exception. (str "Var not found: " (first *command-line-args*) + " " (babashka.classpath/get-classpath))))))) + :command-line-args (next options)} ;; fallback (if (some opts-map [:file :jar :socket-repl :expressions :main]) (assoc opts-map @@ -517,15 +524,7 @@ Use -- to separate script command line args from bb command line args. [nil (-> (p/process args {:inherit true}) p/check - :exit)])}) - :fn - (let [var (get task :var) - var-sym (symbol var)] - {:exec-src (pr-str `(do (if-let [f (requiring-resolve '~var-sym)] - (apply f *command-line-args*) - (throw (Exception. (str "Var not found: " '~var-sym - " " (babashka.classpath/get-classpath))))))) - :command-line-args command-line-args})) + :exit)])})) (error (str "No such task: " task) 1)) (error (str "File does not exist: " task) 1))) diff --git a/test-resources/bb.edn b/test-resources/bb.edn index d2f3b627..b0a25d84 100644 --- a/test-resources/bb.edn +++ b/test-resources/bb.edn @@ -1,8 +1,8 @@ {:paths ["test-resources/bb-edn"] :tasks {:count-files {:task/type :shell :args ["bash" "-c" "ls | wc -l"]} - :bash {:task/type :fn - :var user/bash} + :bash {:task/type :babashka + :args [:invoke user/bash]} :eval-plus {:task/type :babashka :args [-e (apply + (map (fn [i] (Integer/parseInt i))