diff --git a/process b/process index f277204a..14e1259b 160000 --- a/process +++ b/process @@ -1 +1 @@ -Subproject commit f277204a46e0c09440968b6ee88b641bf0c1e58e +Subproject commit 14e1259bb7caff3882921d6f6c71e6f08739113f diff --git a/src/babashka/deps.clj b/src/babashka/deps.clj index 328dd1c7..d37218f2 100644 --- a/src/babashka/deps.clj +++ b/src/babashka/deps.clj @@ -1,9 +1,8 @@ (ns babashka.deps - (:require - [babashka.impl.process :as pp] - [babashka.process :as p] - [borkdude.deps :as deps] - [sci.core :as sci])) + (:require [babashka.impl.process :as pp] + [babashka.process :as p] + [borkdude.deps :as deps] + [sci.core :as sci])) (defn clojure "Starts clojure similar to CLI. Use `rlwrap bb` for `clj`-like invocation. @@ -28,27 +27,25 @@ (-> @(clojure) :exit) starts a clojure REPL, waits for it to finish and returns the exit code from the process." - [& args] - (let [{:keys [cmd opts prev]} (p/parse-args args) - opts (merge {:in :inherit - :out :inherit - :err :inherit - :shutdown p/destroy-tree} - opts)] - (binding [*in* @sci/in - *out* @sci/out - *err* @sci/err - deps/*dir* (:dir opts) - deps/*env* (:env opts) - deps/*extra-env* (:extra-env opts) - deps/*process-fn* (fn - ([cmd] - (pp/process* {:cmd cmd :opts opts :prev prev})) - ([cmd _] - (pp/process* {:cmd cmd :opts opts :prev prev}))) - deps/*exit-fn* (fn - ([_]) - ([_exit-code msg] - (throw (Exception. msg))))] - ;; (.println System/err (str :args (str/join " " (map str args)))) - (apply deps/-main (map str cmd))))) + ([] (clojure [])) + ([args] (clojure args nil)) + ([args opts] + (let [opts (merge {:in :inherit + :out :inherit + :err :inherit + :shutdown p/destroy-tree} + opts)] + (binding [*in* @sci/in + *out* @sci/out + *err* @sci/err + deps/*dir* (:dir opts) + deps/*env* (:env opts) + deps/*extra-env* (:extra-env opts) + deps/*process-fn* (fn + ([cmd] (pp/process cmd opts)) + ([cmd _] (pp/process cmd opts))) + deps/*exit-fn* (fn + ([_]) + ([_exit-code msg] + (throw (Exception. msg))))] + (apply deps/-main (map str args)))))) diff --git a/src/babashka/impl/tasks.clj b/src/babashka/impl/tasks.clj index f4f1ad6b..f2775b8f 100644 --- a/src/babashka/impl/tasks.clj +++ b/src/babashka/impl/tasks.clj @@ -59,37 +59,13 @@ :err :inherit :shutdown p/destroy-tree}) -(defn shell [cmd & args] - (let [[prev cmd args] - (if (and (map? cmd) - (:proc cmd)) - [cmd (first args) (rest args)] - [nil cmd args]) - [opts cmd args] - (if (map? cmd) - [cmd (first args) (rest args)] - [nil cmd args]) - opts (if-let [o (:out opts)] - (if (string? o) - (update opts :out io/file) - opts) - opts) - opts (if-let [o (:err opts)] - (if (string? o) - (update opts :err io/file) - opts) - opts) - opts (if prev - (assoc opts :in nil) - opts) - cmd (if (.exists (io/file cmd)) - [cmd] - (p/tokenize cmd)) - cmd (into cmd args) - local-log-level (:log-level opts)] +(defn shell [& args] + (let [{:keys [prev cmd opts]} (p/parse-args args) + local-log-level (:log-level opts) + opts (merge default-opts opts)] (sci/binding [log-level (or local-log-level @log-level)] - (apply log-info cmd) - (handle-non-zero (pp/process prev cmd (merge default-opts opts)) opts)))) + (apply log-info args) + (handle-non-zero (pp/process* {:opts opts :cmd cmd :prev prev}) opts)))) (defn clojure [cmd & args] (let [[opts cmd args] diff --git a/test/babashka/deps_test.clj b/test/babashka/deps_test.clj index 3b86ff50..d3edade2 100644 --- a/test/babashka/deps_test.clj +++ b/test/babashka/deps_test.clj @@ -67,14 +67,6 @@ true (p/check) :out) ")))) - (testing "new syntax" - (is (= "6\n" (test-utils/normalize (bb " -(require '[babashka.deps :as deps]) -(require '[babashka.process :as p]) -(-> (babashka.deps/clojure {:out :string} \"-M\" \"-e\" \"(+ 1 2 3)\") - (p/check) - :out) -"))))) (when-not test-utils/native? (is (thrown-with-msg? Exception #"Option changed" (bb " (require '[babashka.deps :as deps])