-
-
Notifications
You must be signed in to change notification settings - Fork 46
/
bases_from_disk.clj
28 lines (26 loc) · 1.68 KB
/
bases_from_disk.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
(ns polylith.clj.core.workspace-clj.bases-from-disk
(:require [polylith.clj.core.file.interface :as file]
[polylith.clj.core.lib.interface :as lib]
[polylith.clj.core.util.interface :as util]
[polylith.clj.core.workspace-clj.brick-paths :as brick-paths]
[polylith.clj.core.workspace-clj.config-from-disk :as config-from-disk]
[polylith.clj.core.workspace-clj.namespaces-from-disk :as ns-from-disk]))
(defn read-base [ws-dir ws-type user-home top-namespace ns-to-lib top-src-dir brick->non-top-namespaces base-name]
(let [base-dir (str ws-dir "/bases/" base-name)
src-dir (str base-dir "/src/" top-src-dir)
test-dir (str base-dir "/test/" top-src-dir)
namespaces (ns-from-disk/namespaces-from-disk src-dir test-dir)
config (config-from-disk/read-config-file ws-type base-dir)
entity-root-path (str "bases/" base-name)
lib-deps (lib/brick-lib-deps ws-dir ws-type config top-namespace ns-to-lib namespaces entity-root-path user-home)]
(util/ordered-map :name base-name
:type "base"
:maven-repos (:mvn/repos config)
:paths (brick-paths/source-paths base-dir config)
:namespaces namespaces
:non-top-namespaces (brick->non-top-namespaces base-name)
:lib-deps lib-deps)))
(defn read-bases
[ws-dir ws-type user-home top-namespace ns-to-lib top-src-dir brick->non-top-namespaces]
(vec (sort-by :name (map #(read-base ws-dir ws-type user-home top-namespace ns-to-lib top-src-dir brick->non-top-namespaces %)
(file/directories (str ws-dir "/bases"))))))