Files
net-deertopia/publisher/src/net/deertopia/publisher/config.clj
Madeleine Sydney Ślaga b0018d07a9
Some checks failed
build / build (push) Failing after 19s
feat: publisher에서 configuration을 씀
2026-03-22 16:25:49 -06:00

40 lines
1.2 KiB
Clojure

(ns net.deertopia.publisher.config
(:require [babashka.fs :as fs]
[clojure.spec.alpha :as s]
[net.deertopia.doerg.config]
[net.deertopia.doerg :as-alias doerg]
[net.deertopia.publisher :as-alias p]
[aero.core :as aero]
[clojure.java.io :as io]))
(s/def ::p/config
(s/keys :req [::p/state-directory
::p/org-roam-db-path]))
(s/def ::p/state-directory ::doerg/file)
(s/def ::p/org-roam-db-path ::doerg/file)
(defn read-config [& files]
(let [r (->> files
(filter identity)
(map aero/read-config)
(apply merge))
conformed (s/conform ::p/config r)]
(if-not (s/invalid? conformed)
conformed
(throw (IllegalArgumentException.
"bad config"
(ex-info "couldn't conform"
(s/explain-data ::p/config r)))))))
(def default
(let [r (-> "net/deertopia/publisher/config.edn"
io/resource
(read-config (System/getenv "DOERG_PUBLISHER_CONFIG")))]
(if (s/invalid? r)
(throw (IllegalArgumentException.
"default config is bad!"))
r)))
(def ^:dynamic *cfg* default)