Fix #1473: make :local/root deps resolve paths relative to bb.edn
Co-authored-by: Michiel Borkent <michielborkent@gmail.com>
This commit is contained in:
parent
63abc75cf5
commit
32864476e5
4 changed files with 69 additions and 38 deletions
|
|
@ -9,7 +9,7 @@ A preview of the next release can be installed from
|
||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
...
|
- [#1473](https://github.com/babashka/babashka/issues/1473): make relative paths in bb.edn resolve relative to it ([@lispyclouds](https://github.com/lispyclouds))
|
||||||
|
|
||||||
## 1.1.172 (2023-01-23)
|
## 1.1.172 (2023-01-23)
|
||||||
|
|
||||||
|
|
|
||||||
2
deps.clj
2
deps.clj
|
|
@ -1 +1 @@
|
||||||
Subproject commit 1fb9dd8cbf939f68f8a9ff57667b3b677c958d2e
|
Subproject commit c3b9587619902a04b5ec166e986b3c31b72e2d82
|
||||||
|
|
@ -59,8 +59,9 @@
|
||||||
then used to resolve dependencies in babashka."
|
then used to resolve dependencies in babashka."
|
||||||
([deps-map] (add-deps deps-map nil))
|
([deps-map] (add-deps deps-map nil))
|
||||||
([deps-map {:keys [:aliases :env :extra-env :force]}]
|
([deps-map {:keys [:aliases :env :extra-env :force]}]
|
||||||
|
(let [deps-root (:deps-root @bb-edn)]
|
||||||
(when-let [paths (:paths deps-map)]
|
(when-let [paths (:paths deps-map)]
|
||||||
(let [paths (if-let [deps-root (:deps-root @bb-edn)]
|
(let [paths (if deps-root
|
||||||
(let [deps-root (fs/absolutize deps-root)
|
(let [deps-root (fs/absolutize deps-root)
|
||||||
paths (mapv #(str (fs/file deps-root %)) paths)]
|
paths (mapv #(str (fs/file deps-root %)) paths)]
|
||||||
paths)
|
paths)
|
||||||
|
|
@ -86,15 +87,18 @@
|
||||||
(assoc 'org.clojure/core.specs.alpha ""))})
|
(assoc 'org.clojure/core.specs.alpha ""))})
|
||||||
args (list "-Srepro" ;; do not include deps.edn from user config
|
args (list "-Srepro" ;; do not include deps.edn from user config
|
||||||
"-Spath" "-Sdeps" (str deps-map)
|
"-Spath" "-Sdeps" (str deps-map)
|
||||||
"-Sdeps-file" "") ;; we reset deps file so the local deps.edn isn't used
|
"-Sdeps-file" "__babashka_no_deps_file__.edn") ;; we reset deps file so the local deps.edn isn't used
|
||||||
args (if force (cons "-Sforce" args) args)
|
args (if force (cons "-Sforce" args) args)
|
||||||
args (concat args [(str "-A:" (str/join ":" (cons ":org.babashka/defaults" aliases)))])
|
args (concat args [(str "-A:" (str/join ":" (cons ":org.babashka/defaults" aliases)))])
|
||||||
cp (with-out-str (binding [deps/*env* env
|
bindings (cond->
|
||||||
deps/*extra-env* extra-env]
|
{#'deps/*env* env
|
||||||
|
#'deps/*extra-env* extra-env}
|
||||||
|
deps-root (assoc #'deps/*dir* (str deps-root)))
|
||||||
|
cp (with-out-str (with-bindings bindings
|
||||||
(apply deps/-main args)))
|
(apply deps/-main args)))
|
||||||
cp (str/trim cp)
|
cp (str/trim cp)
|
||||||
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)))))))))
|
||||||
|
|
||||||
(def deps-namespace
|
(def deps-namespace
|
||||||
{'add-deps (sci/copy-var add-deps dns)
|
{'add-deps (sci/copy-var add-deps dns)
|
||||||
|
|
|
||||||
|
|
@ -483,3 +483,30 @@ even more stuff here\"
|
||||||
"{:deps {}}"
|
"{:deps {}}"
|
||||||
(is (= {1 {:a 1}}
|
(is (= {1 {:a 1}}
|
||||||
(bb "-Sdeps" "{:deps {medley/medley {:mvn/version \"1.4.0\"}}}" "-e" "(require 'medley.core) (medley.core/index-by :a [{:a 1}])")))))
|
(bb "-Sdeps" "{:deps {medley/medley {:mvn/version \"1.4.0\"}}}" "-e" "(require 'medley.core) (medley.core/index-by :a [{:a 1}])")))))
|
||||||
|
|
||||||
|
(deftest deps-root-test
|
||||||
|
(fs/with-temp-dir [dir {}]
|
||||||
|
(let [f (fs/file dir "bb.edn")
|
||||||
|
config (str f)]
|
||||||
|
(spit config
|
||||||
|
'{:paths ["src"]
|
||||||
|
:tasks {cp (prn (babashka.classpath/get-classpath))}})
|
||||||
|
(testing "custom deps-root path"
|
||||||
|
(let [out (bb "--config" config "--deps-root" (str dir) "cp")
|
||||||
|
entries (cp/split-classpath out)]
|
||||||
|
(is (= 1 (count entries)))
|
||||||
|
(is (= (fs/file dir "src") (fs/file (first entries))))))
|
||||||
|
(testing "default deps-root path is same as bb.edn"
|
||||||
|
(let [out (bb "--config" config "cp")
|
||||||
|
entries (cp/split-classpath out)]
|
||||||
|
(is (= (fs/parent f) (fs/parent (first entries))))))
|
||||||
|
(spit config
|
||||||
|
'{:paths ["src"]
|
||||||
|
:deps {local/dep {:local/root "local-dep"}}
|
||||||
|
:tasks {cp (prn (babashka.classpath/get-classpath))}})
|
||||||
|
(testing "relative paths in deps should be relative to bb.edn"
|
||||||
|
(let [root (fs/create-dir (fs/file dir "local-dep"))
|
||||||
|
_ (spit (str (fs/file root "deps.edn")) {})
|
||||||
|
out (bb "--config" config "cp")
|
||||||
|
entries (cp/split-classpath out)]
|
||||||
|
(is (= (fs/parent f) (fs/parent (first entries)))))))))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue