diff --git a/CHANGELOG.md b/CHANGELOG.md index c88517d7..67376e1a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ A preview of the next release can be installed from Berlin. Save the date and/or submit your babashka/clojure-related 20 minute talk in the CfP! +## Unreleased + +- [#1544](https://github.com/babashka/babashka/issues/1544): `:local/root` in script-adjacent bb.edn should resolve relative to script + ## 1.3.178 (2023-04-18) - Fix regression with [#1541](https://github.com/babashka/babashka/issues/1541) diff --git a/src/babashka/main.clj b/src/babashka/main.clj index 7385de53..7b42d829 100644 --- a/src/babashka/main.clj +++ b/src/babashka/main.clj @@ -1128,30 +1128,30 @@ Use bb run --help to show this help output. config (:config global-opts) merge-deps (:merge-deps global-opts) abs-path #(-> % io/file .getAbsolutePath) - bb-edn-file (cond - config (when (fs/exists? config) (abs-path config)) - jar (some-> [jar] cp/new-loader (cp/resource "META-INF/bb.edn") .toString) - :else (if (and file (fs/exists? file)) + config (cond + config (when (fs/exists? config) (abs-path config)) + jar (some-> [jar] cp/new-loader (cp/resource "META-INF/bb.edn") .toString) + :else (if (and file (fs/exists? file)) ;; file relative to bb.edn - (let [rel-bb-edn (fs/file (fs/parent file) "bb.edn")] - (if (fs/exists? rel-bb-edn) - (abs-path rel-bb-edn) + (let [rel-bb-edn (fs/file (fs/parent file) "bb.edn")] + (if (fs/exists? rel-bb-edn) + (abs-path rel-bb-edn) ;; fall back to local bb.edn - (when (fs/exists? "bb.edn") - (abs-path "bb.edn")))) + (when (fs/exists? "bb.edn") + (abs-path "bb.edn")))) ;; default to local bb.edn - (when (fs/exists? "bb.edn") - (abs-path "bb.edn")))) - bb-edn (when (or bb-edn-file merge-deps) - (when bb-edn-file (System/setProperty "babashka.config" bb-edn-file)) - (let [raw-string (when bb-edn-file (slurp bb-edn-file)) - edn (when bb-edn-file (read-bb-edn raw-string)) + (when (fs/exists? "bb.edn") + (abs-path "bb.edn")))) + bb-edn (when (or config merge-deps) + (when config (System/setProperty "babashka.config" config)) + (let [raw-string (when config (slurp config)) + edn (when config (read-bb-edn raw-string)) edn (if merge-deps (deps/merge-deps [edn (read-bb-edn merge-deps)]) edn) edn (assoc edn :raw raw-string - :file bb-edn-file) + :file config) edn (if-let [deps-root (or (:deps-root global-opts) (some-> config fs/parent))] (assoc edn :deps-root deps-root) diff --git a/test-resources/adjacent_bb/bb.edn b/test-resources/adjacent_bb/bb.edn index b489dfa7..72cb21ec 100644 --- a/test-resources/adjacent_bb/bb.edn +++ b/test-resources/adjacent_bb/bb.edn @@ -1 +1,2 @@ -{:deps {medley/medley {:mvn/version "1.3.0"}}} +{:deps {medley/medley {:mvn/version "1.3.0"} + my-local/dep {:local/root "../local-dep"}}} diff --git a/test-resources/adjacent_bb/medley.bb b/test-resources/adjacent_bb/medley.bb index 745e8cf0..e0f63c78 100755 --- a/test-resources/adjacent_bb/medley.bb +++ b/test-resources/adjacent_bb/medley.bb @@ -1,5 +1,9 @@ #!/usr/bin/env bb +(require '[local-dep]) + +(assert (= :foo local-dep/local-dep-var)) + (ns medley (:require [medley.core :as medley])) diff --git a/test-resources/local-dep/deps.edn b/test-resources/local-dep/deps.edn new file mode 100644 index 00000000..ccd9a316 --- /dev/null +++ b/test-resources/local-dep/deps.edn @@ -0,0 +1 @@ +{:paths ["src"]} diff --git a/test-resources/local-dep/src/local_dep.clj b/test-resources/local-dep/src/local_dep.clj new file mode 100644 index 00000000..c12396c0 --- /dev/null +++ b/test-resources/local-dep/src/local_dep.clj @@ -0,0 +1,3 @@ +(ns local-dep) + +(def local-dep-var :foo)