mount.tools.graph: states-with deps
This commit is contained in:
parent
242080bf2d
commit
4f218f4feb
4 changed files with 31 additions and 18 deletions
|
|
@ -2,7 +2,7 @@
|
|||
(:require [clojure.tools.nrepl.server :refer [start-server stop-server]]
|
||||
[mount.core :as mount :refer [defstate]]
|
||||
[app.conf :refer [config]]
|
||||
[app.www])
|
||||
[app.www :refer [nyse-app]])
|
||||
(:gen-class)) ;; for -main / uberjar (no need in dev)
|
||||
|
||||
;; example on creating a network REPL
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
[clojure.tools.namespace.repl :as tn]
|
||||
[boot.core :refer [load-data-readers!]]
|
||||
[mount.core :as mount]
|
||||
[mount.tools.graph :refer [states-with-deps]]
|
||||
[app.utils.logging :refer [with-logging-status]]
|
||||
[app.www]
|
||||
[app.example]
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
(ns mount.core
|
||||
#?(:clj (:require [mount.tools.macro :refer [on-error throw-runtime] :as macro])
|
||||
#?(:clj (:require [mount.tools.macro :refer [on-error throw-runtime] :as macro]
|
||||
[clojure.string :as s])
|
||||
:cljs (:require [mount.tools.macro :as macro]))
|
||||
#?(:cljs (:require-macros [mount.core]
|
||||
[mount.tools.macro :refer [on-error throw-runtime]])))
|
||||
|
|
@ -175,22 +176,6 @@
|
|||
(defn- find-all-states []
|
||||
(keys @meta-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 :status])
|
||||
meta)
|
||||
all)
|
||||
(sort-by :order))))
|
||||
|
||||
|
||||
#?(:clj
|
||||
(defn- var-to-str [v]
|
||||
(str v)))
|
||||
|
|
|
|||
27
src/mount/tools/graph.cljc
Normal file
27
src/mount/tools/graph.cljc
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
(ns mount.tools.graph)
|
||||
|
||||
#?(:clj
|
||||
;;TODO ns based for now. need to be _state_ based. or better yet need to have a real graph :)
|
||||
(defn- add-deps [{:keys [ns] :as state} states]
|
||||
(let [refers (ns-refers ns)
|
||||
any (->> states vals (map :var) set)
|
||||
deps (->> (filter (comp any val) refers)
|
||||
(map (comp str second))
|
||||
set)]
|
||||
(assoc (dissoc state :ns)
|
||||
:deps deps))))
|
||||
|
||||
#?(:clj
|
||||
(defn- meta-with-ns [[sname {:keys [var] :as smeta}]]
|
||||
(let [sns (-> var meta :ns)]
|
||||
(assoc smeta :ns sns :name sname))))
|
||||
|
||||
#?(:clj
|
||||
(defn states-with-deps []
|
||||
(let [states @@#'mount.core/meta-state]
|
||||
(->> (map (comp #(add-deps % states)
|
||||
#(select-keys % [:name :order :ns :status])
|
||||
meta-with-ns)
|
||||
states)
|
||||
(sort-by :order)))))
|
||||
|
||||
Loading…
Reference in a new issue