Partially revert, will revisit

This commit is contained in:
Michiel Borkent 2022-12-05 17:46:43 +01:00
parent 43375d49a2
commit bd857ae3e1
4 changed files with 33 additions and 68 deletions

@ -1 +1 @@
Subproject commit f277204a46e0c09440968b6ee88b641bf0c1e58e Subproject commit 14e1259bb7caff3882921d6f6c71e6f08739113f

View file

@ -1,9 +1,8 @@
(ns babashka.deps (ns babashka.deps
(:require (:require [babashka.impl.process :as pp]
[babashka.impl.process :as pp] [babashka.process :as p]
[babashka.process :as p] [borkdude.deps :as deps]
[borkdude.deps :as deps] [sci.core :as sci]))
[sci.core :as sci]))
(defn clojure (defn clojure
"Starts clojure similar to CLI. Use `rlwrap bb` for `clj`-like invocation. "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 (-> @(clojure) :exit) starts a clojure REPL, waits for it
to finish and returns the exit code from the process." to finish and returns the exit code from the process."
[& args] ([] (clojure []))
(let [{:keys [cmd opts prev]} (p/parse-args args) ([args] (clojure args nil))
opts (merge {:in :inherit ([args opts]
:out :inherit (let [opts (merge {:in :inherit
:err :inherit :out :inherit
:shutdown p/destroy-tree} :err :inherit
opts)] :shutdown p/destroy-tree}
(binding [*in* @sci/in opts)]
*out* @sci/out (binding [*in* @sci/in
*err* @sci/err *out* @sci/out
deps/*dir* (:dir opts) *err* @sci/err
deps/*env* (:env opts) deps/*dir* (:dir opts)
deps/*extra-env* (:extra-env opts) deps/*env* (:env opts)
deps/*process-fn* (fn deps/*extra-env* (:extra-env opts)
([cmd] deps/*process-fn* (fn
(pp/process* {:cmd cmd :opts opts :prev prev})) ([cmd] (pp/process cmd opts))
([cmd _] ([cmd _] (pp/process cmd opts)))
(pp/process* {:cmd cmd :opts opts :prev prev}))) deps/*exit-fn* (fn
deps/*exit-fn* (fn ([_])
([_]) ([_exit-code msg]
([_exit-code msg] (throw (Exception. msg))))]
(throw (Exception. msg))))] (apply deps/-main (map str args))))))
;; (.println System/err (str :args (str/join " " (map str args))))
(apply deps/-main (map str cmd)))))

View file

@ -59,37 +59,13 @@
:err :inherit :err :inherit
:shutdown p/destroy-tree}) :shutdown p/destroy-tree})
(defn shell [cmd & args] (defn shell [& args]
(let [[prev cmd args] (let [{:keys [prev cmd opts]} (p/parse-args args)
(if (and (map? cmd) local-log-level (:log-level opts)
(:proc cmd)) opts (merge default-opts opts)]
[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)]
(sci/binding [log-level (or local-log-level @log-level)] (sci/binding [log-level (or local-log-level @log-level)]
(apply log-info cmd) (apply log-info args)
(handle-non-zero (pp/process prev cmd (merge default-opts opts)) opts)))) (handle-non-zero (pp/process* {:opts opts :cmd cmd :prev prev}) opts))))
(defn clojure [cmd & args] (defn clojure [cmd & args]
(let [[opts cmd args] (let [[opts cmd args]

View file

@ -67,14 +67,6 @@ true
(p/check) (p/check)
:out) :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? (when-not test-utils/native?
(is (thrown-with-msg? Exception #"Option changed" (bb " (is (thrown-with-msg? Exception #"Option changed" (bb "
(require '[babashka.deps :as deps]) (require '[babashka.deps :as deps])