diff --git a/CHANGELOG.md b/CHANGELOG.md index 081a4178..e77212b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ A preview of the next release can be installed from - Add `run-test` and `run-test-var` to `clojure.test` - Compile distributed uberjar using GraalVM, fixes `babashka.process/exec` for Nix +- [#1414](https://github.com/babashka/babashka/issues/1414): preserve metadata on exec task function argument map ## 1.0.165 (2022-11-01) diff --git a/src/babashka/impl/cli.clj b/src/babashka/impl/cli.clj index fcbbe8ef..753e99a7 100644 --- a/src/babashka/impl/cli.clj +++ b/src/babashka/impl/cli.clj @@ -25,10 +25,11 @@ (:org.babashka/cli the-var-meta) (:org.babashka/cli ct) extra-opts) - opts (babashka.cli/parse-opts *command-line-args* cli-opts) task-exec-args (:exec-args ct) cli-exec-args (:exec-args cli-opts) - opts (babashka.cli/merge-opts cli-exec-args task-exec-args opts)] + exec-args {:exec-args (babashka.cli/merge-opts cli-exec-args task-exec-args)} + cli-opts (babashka.cli/merge-opts exec-args cli-opts) + opts (babashka.cli/parse-opts *command-line-args* cli-opts)] (the-var opts))" (random-uuid) (pr-str extra-opts) diff --git a/test-resources/babashka/exec_test.clj b/test-resources/babashka/exec_test.clj index 6eca718f..a18676bf 100644 --- a/test-resources/babashka/exec_test.clj +++ b/test-resources/babashka/exec_test.clj @@ -4,4 +4,6 @@ (defn exec-test {:org.babashka/cli {:coerce {:bar :keyword}}} [m] - (prn m)) + (if (:meta m) + (prn (meta m)) + (prn m))) diff --git a/test/babashka/exec_test.clj b/test/babashka/exec_test.clj index 4493e356..4a990520 100644 --- a/test/babashka/exec_test.clj +++ b/test/babashka/exec_test.clj @@ -3,7 +3,7 @@ [babashka.test-utils :as u] [cheshire.core :as cheshire] [clojure.edn :as edn] - [clojure.test :as t :refer [deftest is]])) + [clojure.test :as t :refer [deftest is testing]])) (defn bb [& args] (apply u/bb nil args)) @@ -33,4 +33,17 @@ "{:deps {} :tasks {foo {:task (exec 'babashka.exec-test/exec-test)}}}" (is (= {:foo [1], :bar :yeah} - (edn/read-string (bb "-cp" "test-resources" "run" "foo" "--foo" "1" "--bar" "yeah")))))) + (edn/read-string (bb "-cp" "test-resources" "run" "foo" "--foo" "1" "--bar" "yeah"))))) + (testing "task exec args" + (u/with-config + "{:deps {} + :tasks {foo {:exec-args {:foo :bar} + :task (exec 'babashka.exec-test/exec-test)}}}" + (is (= {:foo :bar, :bar :yeah} + (edn/read-string (bb "-cp" "test-resources" "run" "foo" "--bar" "yeah")))))) + (testing "meta" + (u/with-config + "{:deps {} + :tasks {foo {:task (exec 'babashka.exec-test/exec-test)}}}" + (is (= #:org.babashka{:cli {:args ["dude"]}} + (edn/read-string (bb "-cp" "test-resources" "run" "foo" "dude" "--bar" "yeah" "--meta")))))))