Integrate with clojure.spec
malcolmsparks opened this issue · 1 comments
malcolmsparks commented
bsima commented
Integration can be as simple as:
(def config
(let [cfg (aero/read-config (io/resource "config.edn"))]
(if-not (spec/valid? ::conf-spec/config cfg)
(throw (Exception. (spec/explain-str ::conf-spec/config cfg)))
;; if config is valid, return the map
cfg)))
That's actually what I use in my codebase, albeit slightly modified (I removed mount's defstate
and some custom error handling stuff, but the gist is the same).
::conf-spec/config
is another namespace that is dedicated to specing my config map. It works really well for me.