From d7ed8ec71b0bd2e29b1358386347315326beb280 Mon Sep 17 00:00:00 2001 From: anatoly Date: Tue, 17 Nov 2015 10:38:16 -0500 Subject: [PATCH] adding states-with-deps --- src/mount/core.clj | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/mount/core.clj b/src/mount/core.clj index f974a15..d81bd86 100644 --- a/src/mount/core.clj +++ b/src/mount/core.clj @@ -72,6 +72,22 @@ (map second) (filter mount-state?))) + +;;TODO ns based for now. need to be _state_ based +(defn- add-deps [{:keys [ns] :as state} all] + (let [refers (ns-refers ns) + any (set all) + deps (filter (comp any val) refers)] + (assoc state :deps deps))) + +(defn states-with-deps [] + (let [all (find-all-states)] + (->> (map (comp #(add-deps % all) + #(select-keys % [:name :order :ns]) + meta) + all) + (sort-by :order)))) + (defn- bring [states fun order] (->> states (sort-by (comp :order meta) order)