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
|
||||
(: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]))
|
||||
(:require [babashka.deps :as deps]))
|
||||
|
||||
(defn add-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})
|
||||
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
|
||||
"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.
|
||||
|
|
@ -74,10 +27,5 @@
|
|||
([lib coord]
|
||||
(add-libs {lib coord}))
|
||||
([lib]
|
||||
(let [coord (invoke-tool {:tool-alias :deps
|
||||
: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) {}))))))
|
||||
(throw (ex-info "add-lib without explicit version isn't supported in babashka (yet)" {:lib lib}))))
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue