-
-
Notifications
You must be signed in to change notification settings - Fork 46
/
profile.clj
38 lines (33 loc) · 1.57 KB
/
profile.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
29
30
31
32
33
34
35
36
37
38
(ns polylith.clj.core.workspace-clj.profile
(:require [clojure.string :as str]
[polylith.clj.core.lib.interface :as lib]
[polylith.clj.core.util.interface :as util]
[polylith.clj.core.path-finder.interface.criterias :as c]
[polylith.clj.core.path-finder.interface.extract :as extract]
[polylith.clj.core.path-finder.interface.select :as select]))
(defn profile [[profile-key {:keys [extra-paths extra-deps]}] user-home]
(let [path-entries (extract/path-entries [extra-paths] nil)
component-names (vec (sort (select/names path-entries c/component?)))
base-names (vec (sort (select/names path-entries c/base?)))
project-names (vec (sort (select/names path-entries c/project?)))]
[(subs (name profile-key) 1)
(util/ordered-map :paths extra-paths
:lib-deps (lib/with-sizes extra-deps user-home)
:component-names component-names
:base-names base-names
:project-names project-names)]))
(defn profile? [[alias]]
(str/starts-with? (name alias) "+"))
(defn profile-to-settings [aliases user-home]
(into {} (map #(profile % user-home)
(filterv profile? aliases))))
(defn active-profiles [{:keys [selected-profiles]}
default-profile-name
profile-to-settings]
(if (empty? selected-profiles)
(if (empty? profile-to-settings)
#{}
#{default-profile-name})
(if (contains? (set selected-profiles) "")
[]
(set selected-profiles))))