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
|
(ns babashka.impl.deps
|
||||||
(:require [babashka.impl.classpath :as cp]
|
(:require [babashka.deps :as bdeps]
|
||||||
[babashka.process :as p]
|
[babashka.impl.classpath :as cp]
|
||||||
[borkdude.deps :as deps]
|
[borkdude.deps :as deps]
|
||||||
[clojure.string :as str]
|
[clojure.string :as str]
|
||||||
[sci.core :as sci]))
|
[sci.core :as sci]))
|
||||||
|
|
@ -77,61 +77,9 @@
|
||||||
cp (str/replace cp (re-pattern (str cp/path-sep "+$")) "")]
|
cp (str/replace cp (re-pattern (str cp/path-sep "+$")) "")]
|
||||||
(cp/add-classpath cp)))))
|
(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
|
(def deps-namespace
|
||||||
{'add-deps (sci/copy-var add-deps dns)
|
{'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)
|
'merge-deps (sci/copy-var merge-deps dns)
|
||||||
;; undocumented
|
;; undocumented
|
||||||
'merge-defaults (sci/copy-var merge-default-deps dns)})
|
'merge-defaults (sci/copy-var merge-default-deps dns)})
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
(ns babashka.impl.print-deps
|
(ns babashka.impl.print-deps
|
||||||
(:require
|
(:require
|
||||||
|
[babashka.deps :as deps]
|
||||||
[babashka.impl.common :as common]
|
[babashka.impl.common :as common]
|
||||||
[babashka.impl.deps :as deps]
|
|
||||||
[clojure.edn :as edn]
|
[clojure.edn :as edn]
|
||||||
[clojure.java.io :as io]
|
[clojure.java.io :as io]
|
||||||
[clojure.pprint :as pp]
|
[clojure.pprint :as pp]
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
(ns babashka.impl.tasks
|
(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.common :refer [ctx bb-edn debug]]
|
||||||
[babashka.impl.deps :as deps]
|
|
||||||
[babashka.process :as p]
|
[babashka.process :as p]
|
||||||
[clojure.core.async :refer [<!!]]
|
[clojure.core.async :refer [<!!]]
|
||||||
[clojure.java.io :as io]
|
[clojure.java.io :as io]
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
(:refer-clojure :exclude [error-handler])
|
(:refer-clojure :exclude [error-handler])
|
||||||
(:require
|
(:require
|
||||||
[aaaa-this-has-to-be-first.because-patches]
|
[aaaa-this-has-to-be-first.because-patches]
|
||||||
|
[babashka.deps :as bdeps]
|
||||||
[babashka.fs :as fs]
|
[babashka.fs :as fs]
|
||||||
[babashka.impl.bencode :refer [bencode-namespace]]
|
[babashka.impl.bencode :refer [bencode-namespace]]
|
||||||
[babashka.impl.cheshire :refer [cheshire-core-namespace]]
|
[babashka.impl.cheshire :refer [cheshire-core-namespace]]
|
||||||
|
|
@ -848,7 +849,7 @@ Use bb run --help to show this help output.
|
||||||
:debug debug
|
:debug debug
|
||||||
:preloads preloads
|
:preloads preloads
|
||||||
:loader (:loader @cp/cp-state)}))))
|
: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)
|
(-> @proc :exit)
|
||||||
0)]
|
0)]
|
||||||
uberscript [nil 0]
|
uberscript [nil 0]
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue