diff --git a/doerg/resources/net/deertopia/doerg/default-config.edn b/doerg/resources/net/deertopia/doerg/default-config.edn index 175b83a..0a8775b 100644 --- a/doerg/resources/net/deertopia/doerg/default-config.edn +++ b/doerg/resources/net/deertopia/doerg/default-config.edn @@ -4,10 +4,8 @@ :latex "xelatex" :dvisvgm "dvisvgm" :doerg-temml-worker - #profile {:dev-publisher "../doerg/doerg-temml-worker/index.js" - :dev-doerg "./doerg-temml-worker/index.js" + #profile {:dev #file "../../../../doerg-temml-worker/index.js" :default "doerg-temml-worker"} :doerg-parser - #profile {:dev-publisher "../doerg/doerg-parser/index.js" - :dev-doerg "./doerg-parser/index.js" + #profile {:dev #file "../../../../doerg-parser/index.js" :default "doerg-parser"}} diff --git a/doerg/src/net/deertopia/doerg/config.clj b/doerg/src/net/deertopia/doerg/config.clj index b4d900d..9428d4b 100644 --- a/doerg/src/net/deertopia/doerg/config.clj +++ b/doerg/src/net/deertopia/doerg/config.clj @@ -45,29 +45,32 @@ (and (fs/exists? x) x)) (fs/split-paths (System/getenv "XDG_DATA_DIRS")))) -(defn make-read-config [spec] - (fn [& files] - (let [r (->> files - (filter identity) - (map aero/read-config) - (apply merge)) - conformed (s/conform spec r)] - (if-not (s/invalid? conformed) - conformed - (throw (IllegalArgumentException. - "bad config" - (ex-info "couldn't conform" - (s/explain-data spec r)))))))) +(defmethod aero/reader 'file + [{:keys [source]} tag value] + "Aero tag to reference a `java.io.File` relative to the config + file." + (-> (aero/relative-resolver source value) + fs/file)) -(def read-config (make-read-config ::d/config)) +(defn read-config [spec files & {:as opts}] + (let [r (->> files + (filter identity) + (map #(aero/read-config % opts)) + (apply merge)) + conformed (s/conform spec r)] + (if-not (s/invalid? conformed) + conformed + (throw (ex-info "Failed to conform config" + (s/explain-data spec r)))))) -(def default - (read-config - ;; Default config. +(def sources + [;; Default config. (io/resource "net/deertopia/doerg/default-config.edn") ;; Defaults set at build time, if any. (io/resource "net/deertopia/doerg/extra-config.edn") ;; Config set at runtime. - (System/getenv "DOERG_CONFIG"))) + (System/getenv "DOERG_CONFIG")]) + +(def default (read-config ::d/config sources)) (def ^:dynamic *cfg* default) diff --git a/publisher/.dir-locals.el b/publisher/.dir-locals.el index 5191489..129c890 100644 --- a/publisher/.dir-locals.el +++ b/publisher/.dir-locals.el @@ -1,11 +1,12 @@ ((nil - . ((cider-clojure-cli-aliases . ":dev") - (eval - . (progn - (defun start-deertopia-server () - (let ((n (cider-format-connection-params "%j" cider-launch-params))) - (when (equal n "net-deertopia") - (cider-interactive-eval - "(do (require '[net.deertopia.publisher.server :as server]) - (server/start!))")))) - (add-hook 'cider-connected-hook #'start-deertopia-server)))))) + . ((cider-clojure-cli-aliases . ":dev:test") + ;; (eval + ;; . (progn + ;; (defun start-deertopia-server () + ;; (let ((n (cider-format-connection-params "%j" cider-launch-params))) + ;; (when (equal n "net-deertopia") + ;; (cider-interactive-eval + ;; "(do (require '[net.deertopia.publisher.server :as server]) + ;; (server/start!))")))) + ;; (add-hook 'cider-connected-hook #'start-deertopia-server))) + ))) diff --git a/publisher/deps.edn b/publisher/deps.edn index 84b9907..e163969 100644 --- a/publisher/deps.edn +++ b/publisher/deps.edn @@ -17,4 +17,5 @@ :aliases {:test {:extra-deps {lambdaisland/kaocha {:mvn/version "1.91.1392"}} :extra-paths ["test"] - :main-opts ["-m" "kaocha.runner"]}}} + :main-opts ["-m" "kaocha.runner"]} + :dev {:extra-paths ["dev"]}}} diff --git a/publisher/dev/user.clj b/publisher/dev/user.clj new file mode 100644 index 0000000..8a24a99 --- /dev/null +++ b/publisher/dev/user.clj @@ -0,0 +1,22 @@ +(ns user + (:require [net.deertopia.publisher.server :as server] + [net.deertopia.doerg :as-alias doerg] + [net.deertopia.publisher :as-alias publisher] + [net.deertopia.doerg.config :as doerg-config] + [net.deertopia.publisher.config :as publisher-config] + [babashka.fs :as fs])) + +(alter-var-root + #'doerg-config/*cfg* + (constantly (doerg-config/read-config ::doerg/config + doerg-config/sources + :profile :dev))) + +(alter-var-root + #'publisher-config/*cfg* + (constantly (doerg-config/read-config ::publisher/config + publisher-config/sources + :profile :dev))) + +(when (not= :running (server/status)) + (server/start!)) diff --git a/publisher/src/net/deertopia/publisher/config.clj b/publisher/src/net/deertopia/publisher/config.clj index 5cc7ab5..bd2084e 100644 --- a/publisher/src/net/deertopia/publisher/config.clj +++ b/publisher/src/net/deertopia/publisher/config.clj @@ -14,15 +14,15 @@ (s/def ::p/state-directory ::doerg/file) (s/def ::p/org-roam-db-path ::doerg/file) -(def read-config (doerg-config/make-read-config ::p/config)) - -(def default - (read-config - ;; Default config. +(def sources + [;; Default config. (io/resource "net/deertopia/publisher/default-config.edn") ;; Defaults set at build time, if any. (io/resource "net/deertopia/publisher/extra-config.edn") ;; Config set at runtime. - (System/getenv "DOERG_PUBLISHER_CONFIG"))) + (System/getenv "DOERG_PUBLISHER_CONFIG")]) + +(def default + (doerg-config/read-config ::p/config sources)) (def ^:dynamic *cfg* default) diff --git a/publisher/src/net/deertopia/publisher/server.clj b/publisher/src/net/deertopia/publisher/server.clj index df4beb4..237f565 100644 --- a/publisher/src/net/deertopia/publisher/server.clj +++ b/publisher/src/net/deertopia/publisher/server.clj @@ -24,8 +24,6 @@ [babashka.fs :as fs] [aero.core :as aero])) -(def ^:const html-dir (-> cfg/*cfg* ::publisher/state-directory)) - ;;; Routes