diff --git a/.clj-kondo/config.edn b/.clj-kondo/config.edn index 2f0de4a9..2e9b6f40 100644 --- a/.clj-kondo/config.edn +++ b/.clj-kondo/config.edn @@ -5,4 +5,5 @@ babashka.impl.File/gen-wrapper-fn-2 clojure.core/def babashka.impl.Pattern/gen-wrapper-fn-2 clojure.core/def babashka.impl.Pattern/gen-constants clojure.core/declare} - :linters {:unsorted-required-namespaces {:level :warning}}} + :linters {:unsorted-required-namespaces {:level :warning}} + :hooks {:analyze-call {clojure.core/requiring-resolve hooks.mine/req-resolve}}} diff --git a/process b/process index be047624..36b2295b 160000 --- a/process +++ b/process @@ -1 +1 @@ -Subproject commit be047624edac65c3c648adace291bba38cd1a933 +Subproject commit 36b2295bc5cdf10e7f2a09c53916c22b91fc8521 diff --git a/src/babashka/impl/process.clj b/src/babashka/impl/process.clj index b463562a..33d77ea3 100644 --- a/src/babashka/impl/process.clj +++ b/src/babashka/impl/process.clj @@ -8,6 +8,10 @@ (def defaults (sci/copy-var process/*defaults* tns)) +(defn process* [& args] + (binding [process/*defaults* @defaults] + (apply process/process* args))) + (defn process [& args] (binding [process/*defaults* @defaults] (apply process/process args))) @@ -17,7 +21,9 @@ (apply process/pb args))) (def process-namespace - {'process (copy-var process tns) + {'parse-args (copy-var process/parse-args tns) + 'process* (copy-var process/process* tns) + 'process (copy-var process tns) 'check (copy-var process/check tns) 'pb (copy-var pb tns) 'start (copy-var process/start tns) 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]