Expose babashka.deps/clojure
This commit is contained in:
parent
552bcc7931
commit
7c7053119a
5 changed files with 58 additions and 59 deletions
50
src/babashka/deps.clj
Normal file
50
src/babashka/deps.clj
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
(ns babashka.deps
|
||||
(:require [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.
|
||||
Invokes java with babashka.process/process for `-M`, `-X` and `-A`
|
||||
and returns the associated record. Default options passed to
|
||||
babashka.process/process are:
|
||||
|
||||
{:in :inherit
|
||||
:out :inherit
|
||||
:err :inherit
|
||||
:shutdown p/destroy-tree}
|
||||
|
||||
which can be overriden with opts.
|
||||
|
||||
Returns `nil` and prints to *out* for --help, -Spath, -Sdescribe and
|
||||
-Stree.
|
||||
|
||||
Examples:
|
||||
|
||||
(-> (clojure '[-M -e (+ 1 2 3)] {:out :string}) deref :out) returns
|
||||
\"6\n\".
|
||||
|
||||
(-> @(clojure) :exit) starts a clojure REPL, waits for it
|
||||
to finish and returns the exit code from the process."
|
||||
([] (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] (p/process cmd opts))
|
||||
([cmd _] (p/process cmd opts)))
|
||||
deps/*exit-fn* (fn
|
||||
([_])
|
||||
([_exit-code msg]
|
||||
(throw (Exception. msg))))]
|
||||
(apply deps/-main (map str args))))))
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
(ns babashka.impl.deps
|
||||
(:require [babashka.impl.classpath :as cp]
|
||||
[babashka.process :as p]
|
||||
(:require [babashka.deps :as bdeps]
|
||||
[babashka.impl.classpath :as cp]
|
||||
[borkdude.deps :as deps]
|
||||
[clojure.string :as str]
|
||||
[sci.core :as sci]))
|
||||
|
|
@ -77,61 +77,9 @@
|
|||
cp (str/replace cp (re-pattern (str cp/path-sep "+$")) "")]
|
||||
(cp/add-classpath cp)))))
|
||||
|
||||
(defn clojure
|
||||
"Starts clojure similar to CLI. Use `rlwrap bb` for `clj`-like invocation.
|
||||
Invokes java with babashka.process/process for `-M`, `-X` and `-A`
|
||||
and returns the associated record. Default options passed to
|
||||
babashka.process/process are:
|
||||
|
||||
{:in :inherit
|
||||
:out :inherit
|
||||
:err :inherit
|
||||
:shutdown p/destroy-tree}
|
||||
|
||||
which can be overriden with opts.
|
||||
|
||||
Returns `nil` and prints to *out* for --help, -Spath, -Sdescribe and
|
||||
-Stree.
|
||||
|
||||
Examples:
|
||||
|
||||
(-> (clojure '[-M -e (+ 1 2 3)] {:out :string}) deref :out) returns
|
||||
\"6\n\".
|
||||
|
||||
(-> @(clojure) :exit) starts a clojure REPL, waits for it
|
||||
to finish and returns the exit code from the process."
|
||||
([] (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] (p/process cmd opts))
|
||||
([cmd _] (p/process cmd opts)))
|
||||
deps/*exit-fn* (fn
|
||||
([_])
|
||||
([_exit-code msg]
|
||||
(throw (Exception. msg))))]
|
||||
(apply deps/-main (map str args))))))
|
||||
|
||||
;; (-> (clojure ["-Sdeps" edn "-M:foo"] {:out :inherit}) p/check)
|
||||
|
||||
;; TODO:
|
||||
;; (uberjar {:out "final.jar" :main 'foo.bar})
|
||||
;; (uberscript {:out "final.clj" :main 'foo.bar})
|
||||
|
||||
(def deps-namespace
|
||||
{'add-deps (sci/copy-var add-deps dns)
|
||||
'clojure (sci/copy-var clojure dns)
|
||||
'clojure (sci/copy-var bdeps/clojure dns)
|
||||
'merge-deps (sci/copy-var merge-deps dns)
|
||||
;; undocumented
|
||||
'merge-defaults (sci/copy-var merge-default-deps dns)})
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
(ns babashka.impl.print-deps
|
||||
(:require
|
||||
[babashka.deps :as deps]
|
||||
[babashka.impl.common :as common]
|
||||
[babashka.impl.deps :as deps]
|
||||
[clojure.edn :as edn]
|
||||
[clojure.java.io :as io]
|
||||
[clojure.pprint :as pp]
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
(ns babashka.impl.tasks
|
||||
(:require [babashka.impl.classpath :as cp]
|
||||
(:require [babashka.deps :as deps]
|
||||
[babashka.impl.classpath :as cp]
|
||||
[babashka.impl.common :refer [ctx bb-edn debug]]
|
||||
[babashka.impl.deps :as deps]
|
||||
[babashka.process :as p]
|
||||
[clojure.core.async :refer [<!!]]
|
||||
[clojure.java.io :as io]
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
(:refer-clojure :exclude [error-handler])
|
||||
(:require
|
||||
[aaaa-this-has-to-be-first.because-patches]
|
||||
[babashka.deps :as bdeps]
|
||||
[babashka.fs :as fs]
|
||||
[babashka.impl.bencode :refer [bencode-namespace]]
|
||||
[babashka.impl.cheshire :refer [cheshire-core-namespace]]
|
||||
|
|
@ -848,7 +849,7 @@ Use bb run --help to show this help output.
|
|||
:debug debug
|
||||
:preloads preloads
|
||||
:loader (:loader @cp/cp-state)}))))
|
||||
clojure [nil (if-let [proc (deps/clojure command-line-args)]
|
||||
clojure [nil (if-let [proc (bdeps/clojure command-line-args)]
|
||||
(-> @proc :exit)
|
||||
0)]
|
||||
uberscript [nil 0]
|
||||
|
|
|
|||
Loading…
Reference in a new issue