Simplify, just don't support adding deps without explicit version
This commit is contained in:
parent
7b8dc35149
commit
4a37d5e8f5
1 changed files with 2 additions and 54 deletions
|
|
@ -1,12 +1,5 @@
|
||||||
;; rip-off from https://github.com/clojure/clojure/blob/master/src/clj/clojure/repl/deps.clj
|
|
||||||
;; but re-implemented using babashka.deps
|
|
||||||
(ns clojure.repl.deps
|
(ns clojure.repl.deps
|
||||||
(:require [babashka.deps :as deps]
|
(:require [babashka.deps :as deps]))
|
||||||
[borkdude.deps :as deps.clj]
|
|
||||||
[clojure.walk :as walk]
|
|
||||||
[clojure.edn :as edn]
|
|
||||||
[clojure.java.io :as io]
|
|
||||||
[babashka.process :as p]))
|
|
||||||
|
|
||||||
(defn add-libs
|
(defn add-libs
|
||||||
"Given lib-coords, a map of lib to coord, will resolve all transitive deps for the libs
|
"Given lib-coords, a map of lib to coord, will resolve all transitive deps for the libs
|
||||||
|
|
@ -16,46 +9,6 @@
|
||||||
(deps/add-deps {:deps lib-coords})
|
(deps/add-deps {:deps lib-coords})
|
||||||
nil)
|
nil)
|
||||||
|
|
||||||
(defn tool-expr [lib]
|
|
||||||
(walk/postwalk-replace
|
|
||||||
{'lib lib}
|
|
||||||
'(let [current-basis (requiring-resolve 'clojure.java.basis/current-basis)
|
|
||||||
procurer (select-keys (current-basis) [:mvn/repos :mvn/local-repo])
|
|
||||||
invoke-tool (requiring-resolve 'clojure.tools.deps.interop/invoke-tool)
|
|
||||||
coord (invoke-tool {:tool-alias :deps
|
|
||||||
:fn 'clojure.tools.deps/find-latest-version
|
|
||||||
:args {:lib 'lib, :procurer procurer}})]
|
|
||||||
coord)))
|
|
||||||
|
|
||||||
(defn- invoke-tool
|
|
||||||
{:added "1.12"}
|
|
||||||
[{:keys [tool-name tool-alias fn args preserve-envelope]
|
|
||||||
:as opts
|
|
||||||
:or {preserve-envelope false}}]
|
|
||||||
(when-not (or tool-name tool-alias) (throw (ex-info "Either :tool-alias or :tool-name must be provided" (or opts {}))))
|
|
||||||
(when-not (symbol? fn) (throw (ex-info (str "fn should be a symbol " fn) (or opts {}))))
|
|
||||||
(let [args (assoc args :clojure.exec/invoke :fn)
|
|
||||||
;; this is a hack since in lein there is no basis and we just make this up:
|
|
||||||
args (assoc args :procurer {:mvn/repos {"central" {:url "https://repo1.maven.org/maven2/"}, "clojars" {:url "https://repo.clojars.org/"}}
|
|
||||||
:mvn/local-repo (str (io/file (System/getProperty "user.home") ".m2"))})
|
|
||||||
_ (when (:debug opts) (println "args" args))
|
|
||||||
command-strs [(str "-T" (or tool-alias tool-name)) (pr-str fn) (pr-str args)]
|
|
||||||
_ (when (:debug opts) (apply println "Invoking: " command-strs))
|
|
||||||
envelope (edn/read-string
|
|
||||||
(binding [deps.clj/*clojure-process-fn* (clojure.core/fn [{:keys [cmd]}]
|
|
||||||
(let [{:keys [exit out]} (apply p/sh cmd)]
|
|
||||||
(if (zero? exit)
|
|
||||||
out
|
|
||||||
(throw (RuntimeException. (str "Process failed with exit=" exit))))))]
|
|
||||||
(apply deps.clj/-main command-strs)))]
|
|
||||||
(if preserve-envelope
|
|
||||||
envelope
|
|
||||||
(let [{:keys [tag val]} envelope
|
|
||||||
parsed-val (edn/read-string val)]
|
|
||||||
(if (= :ret tag)
|
|
||||||
parsed-val
|
|
||||||
(throw (ex-info (:cause parsed-val) (or parsed-val {}))))))))
|
|
||||||
|
|
||||||
(defn add-lib
|
(defn add-lib
|
||||||
"Given a lib that is not yet on the repl classpath, make it available by
|
"Given a lib that is not yet on the repl classpath, make it available by
|
||||||
downloading the library if necessary and adding it to the classloader.
|
downloading the library if necessary and adding it to the classloader.
|
||||||
|
|
@ -74,10 +27,5 @@
|
||||||
([lib coord]
|
([lib coord]
|
||||||
(add-libs {lib coord}))
|
(add-libs {lib coord}))
|
||||||
([lib]
|
([lib]
|
||||||
(let [coord (invoke-tool {:tool-alias :deps
|
(throw (ex-info "add-lib without explicit version isn't supported in babashka (yet)" {:lib lib}))))
|
||||||
:fn 'clojure.tools.deps/find-latest-version
|
|
||||||
:args {:lib lib}})]
|
|
||||||
(if coord
|
|
||||||
(add-libs {lib coord})
|
|
||||||
(throw (ex-info (str "No version found for lib " lib) {}))))))
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue