Skip to content

Commit 9f5754b

Browse files
committed
Add :dir option to create-basis to change relative directory for basis creation
1 parent f315666 commit 9f5754b

File tree

3 files changed

+17
-23
lines changed

3 files changed

+17
-23
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Changelog
55

66
* next
77
* Default to Clojure 1.11.2 in root deps.edn
8-
* Fix bug in TDEPS-256 change for :project using relative dirs
8+
* Add :dir option to create-basis to change relative directory for basis creation
99
* 0.18.1398 on Jan 4, 2023
1010
* Fix function spec typo
1111
* 0.18.1394 on Dec 29, 2023

src/main/clojure/clojure/tools/deps.clj

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -787,19 +787,6 @@
787787
project-edn (assoc :project project-edn)
788788
extra-edn (assoc :extra extra-edn))))
789789

790-
(defmacro ^:private in-project-dir
791-
"If project deps.edn is not in the current dir, push project directory
792-
into current directory context while creating basis. Local deps use paths
793-
relative to project dir. Use anaphoric 'assumed-project in body."
794-
[project-deps & body]
795-
`(if (and (instance? String ~project-deps)
796-
(not (.equals dir/*the-dir* (.getParentFile (jio/file ~project-deps)))))
797-
(dir/with-dir (.getParentFile (jio/file ~project-deps))
798-
(let [~'assumed-project (.getName (jio/file ~project-deps))]
799-
~@body))
800-
(let [~'assumed-project ~project-deps]
801-
~@body)))
802-
803790
(defn create-basis
804791
"Create a basis from a set of deps sources and a set of aliases. By default, use
805792
root, user, and project deps and no argmaps (essentially the same classpath you get by
@@ -812,9 +799,10 @@
812799
subprocesses (tool, resolve-deps, make-classpath-map).
813800
814801
Options:
802+
:dir - directory root path, defaults to current directory
815803
:root - dep source, default = :standard
816804
:user - dep source, default = :standard
817-
:project - dep source, default = :standard (\"./deps.edn\")
805+
:project - dep source, default = :standard (\"deps.edn\")
818806
:extra - dep source, default = nil
819807
:aliases - coll of aliases, default = nil
820808
@@ -834,12 +822,9 @@
834822
:libs - lib map, per resolve-deps
835823
:classpath - classpath map per make-classpath-map
836824
:classpath-roots - vector of paths in classpath order"
837-
[{:keys [root user project extra aliases] :as params}]
838-
(in-project-dir project
839-
(let [project assumed-project ;; use anaphoric for project deps in context of project dir
840-
params (cond-> params (contains? params :project) (assoc :project project))
841-
842-
basis-config (cond-> nil
825+
[{:keys [dir root user project extra aliases] :as params}]
826+
(dir/with-dir (jio/file (or dir "."))
827+
(let [basis-config (cond-> nil
843828
(contains? params :root) (assoc :root root)
844829
(contains? params :project) (assoc :project project)
845830
(contains? params :user) (assoc :user user)

src/test/clojure/clojure/tools/deps/test_deps.clj

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -288,13 +288,14 @@
288288
(let [base (.getCanonicalFile *test-dir*)
289289
adeps (.getPath (jio/file base "a/deps.edn"))
290290
bdeps (.getPath (jio/file base "b/deps.edn"))
291+
adir (.getAbsolutePath (jio/file base "a"))
291292
bdir (.getAbsolutePath (jio/file base "b"))]
292293
(jio/make-parents *test-dir* "a/deps.edn")
293294
(jio/make-parents *test-dir* "b/deps.edn")
294295
(spit adeps "{:deps {b/b {:local/root \"../b\"}}}")
295296
(spit bdeps "{:paths [\"src\"]}")
296-
(let [b (deps/create-basis {:user nil :project adeps})]
297-
(is (contains? (:classpath b) (.getAbsolutePath (jio/file bdir "src"))))))))
297+
(let [abasis (deps/create-basis {:user nil :dir adir})]
298+
(is (contains? (:classpath abasis) (.getAbsolutePath (jio/file bdir "src"))))))))
298299

299300
(deftest empty-nil-deps-is-valid
300301
(testing "file exists but is empty (nil)"
@@ -513,6 +514,14 @@
513514
:basis-config {:root nil, :user nil, :aliases [:a1 :a2]} ;; aliases remembered
514515
})))
515516

517+
(deftest test-project-deps-doesnt-exist
518+
(is (= "BOGUS.edn" (-> (deps/create-basis {:user nil :project "BOGUS.edn"})
519+
:basis-config :project)))
520+
(is (= "BOGUS.edn" (-> (deps/create-basis {:user nil :dir "foo" :project "BOGUS.edn"})
521+
:basis-config :project)))
522+
(is (= "foo/BOGUS.edn" (-> (deps/create-basis {:user nil :project "foo/BOGUS.edn"})
523+
:basis-config :project))))
524+
516525
(deftest test-resolved-added-libs
517526
(let [basis (deps/create-basis {:user nil :project nil})
518527
libs (:libs basis)]

0 commit comments

Comments
 (0)