diff --git a/CHANGELOG.md b/CHANGELOG.md index 23f4da29..e09d18ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ A preview of the next release can be installed from - [#1487](https://github.com/babashka/babashka/issues/1487): `babashka.tasks/clojure` should be supported without arguments to start a REPL - [#1496](https://github.com/babashka/babashka/issues/1496): Add `set-agent-send-executor!` and `set-agent-send-off-executor!` - [#1489](https://github.com/babashka/babashka/issues/1489): Don't overwrite non-empty, non-jar files when writing uberscript/uberjar ([@bobisageek](https://github.com/bobisageek)) +- [#1506](https://github.com/babashka/babashka/issues/1506): `:exec-args` in task should override `:exec-args` on fn metadata ## 1.1.173 (2023-02-04) diff --git a/src/babashka/impl/cli.clj b/src/babashka/impl/cli.clj index 753e99a7..7a152fc2 100644 --- a/src/babashka/impl/cli.clj +++ b/src/babashka/impl/cli.clj @@ -21,14 +21,16 @@ ns (:ns (meta the-var)) ns-meta (meta ns) ct (babashka.tasks/current-task) + exec-args (babashka.cli/merge-opts (:exec-args (:org.babashka/cli ns-meta)) + (:exec-args (:org.babashka/cli the-var-meta)) + (:exec-args (:org.babashka/cli ct)) + (:exec-args ct) + (:exec-args extra-opts)) cli-opts (babashka.cli/merge-opts (:org.babashka/cli ns-meta) (:org.babashka/cli the-var-meta) (:org.babashka/cli ct) extra-opts) - task-exec-args (:exec-args ct) - cli-exec-args (:exec-args cli-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) + cli-opts (assoc cli-opts :exec-args exec-args) opts (babashka.cli/parse-opts *command-line-args* cli-opts)] (the-var opts))" (random-uuid) diff --git a/test-resources/babashka/exec_test.clj b/test-resources/babashka/exec_test.clj index a18676bf..d68ab185 100644 --- a/test-resources/babashka/exec_test.clj +++ b/test-resources/babashka/exec_test.clj @@ -2,7 +2,9 @@ {:org.babashka/cli {:coerce {:foo []}}}) (defn exec-test - {:org.babashka/cli {:coerce {:bar :keyword}}} + {:org.babashka/cli + {:exec-args {:foo :foo} + :coerce {:bar :keyword}}} [m] (if (:meta m) (prn (meta m)) diff --git a/test/babashka/exec_test.clj b/test/babashka/exec_test.clj index 6af27024..960de5fa 100644 --- a/test/babashka/exec_test.clj +++ b/test/babashka/exec_test.clj @@ -37,8 +37,13 @@ (testing "task exec args" (u/with-config "{:deps {} - :tasks {foo {:exec-args {:foo :bar} - :task (exec 'babashka.exec-test/exec-test)}}}" + :tasks {foo {:task (exec 'babashka.exec-test/exec-test)}}}" + (is (= {:foo :foo, :bar :yeah} + (edn/read-string (bb "-cp" "test-resources" "run" "foo" "--bar" "yeah"))))) + (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"