Skip to content

Commit 0372d5b

Browse files
itai-spirittjulienvincent
authored andcommitted
expose query-dependencies api
1 parent 0be3272 commit 0372d5b

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

packages/kmono-core/src/k16/kmono/core/graph.clj

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,22 @@
126126

127127
(into (set (:dependents pkg)) dependents)))
128128

129+
(defn query-dependencies
130+
"Find all dependency packages of `pkg-name` within the given `packages` map.
131+
132+
This includes all transitive dependencies."
133+
{:malli/schema [:=> [:cat core.schema/?PackageMap :symbol] [:set :symbol]]}
134+
[packages pkg-name]
135+
136+
(let [pkg (get packages pkg-name)
137+
dependencies
138+
(mapcat
139+
(fn [dep-pkg-name]
140+
(query-dependencies packages dep-pkg-name))
141+
(:depends-on pkg))]
142+
143+
(into (set (:depends-on pkg)) dependencies)))
144+
129145
(defn- update-graph-edges
130146
[packages filtered]
131147
(into

packages/kmono-core/test/k16/kmono/core/graph_test.clj

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,24 @@
7979
(is (match? #{}
8080
(core.graph/query-dependents packages 'com.kepler16/c)))))
8181

82+
(deftest query-dependencies-test
83+
(fs/create-dirs (fs/file *repo* "packages/c"))
84+
(fs/write-bytes (fs/file *repo* "packages/c/deps.edn")
85+
(.getBytes (prn-str {:kmono/package {}
86+
:deps {'com.kepler16/b {:local/root "../b"}}})))
87+
88+
(let [config (core.config/resolve-workspace-config *repo*)
89+
packages (core.packages/resolve-packages *repo* config)]
90+
91+
(is (match? #{'com.kepler16/b 'com.kepler16/a}
92+
(core.graph/query-dependencies packages 'com.kepler16/c)))
93+
94+
(is (match? #{'com.kepler16/a}
95+
(core.graph/query-dependencies packages 'com.kepler16/b)))
96+
97+
(is (match? #{}
98+
(core.graph/query-dependencies packages 'com.kepler16/a)))))
99+
82100
(deftest filter-packages-test
83101
(let [config (core.config/resolve-workspace-config *repo*)
84102
packages (core.packages/resolve-packages *repo* config)]

0 commit comments

Comments
 (0)