This commit is contained in:
@@ -19,7 +19,7 @@
|
|||||||
::s/invalid)))
|
::s/invalid)))
|
||||||
|
|
||||||
(s/def ::d/file
|
(s/def ::d/file
|
||||||
(s/conformer #(or (-> % fs/file fs/expand-home fs/absolutize)
|
(s/conformer #(or (-> % fs/expand-home fs/file)
|
||||||
::s/invalid)))
|
::s/invalid)))
|
||||||
|
|
||||||
(s/def ::d/executable
|
(s/def ::d/executable
|
||||||
@@ -44,12 +44,16 @@
|
|||||||
(and (fs/exists? x) x))
|
(and (fs/exists? x) x))
|
||||||
(fs/split-paths (System/getenv "XDG_DATA_DIRS"))))
|
(fs/split-paths (System/getenv "XDG_DATA_DIRS"))))
|
||||||
|
|
||||||
(defn read-config [f]
|
(defn read-config [& files]
|
||||||
(->> f aero/read-config (s/conform ::d/config)))
|
(->> files
|
||||||
|
(filter identity)
|
||||||
|
(map aero/read-config)
|
||||||
|
(apply merge)
|
||||||
|
(s/conform ::d/config)))
|
||||||
|
|
||||||
(def default
|
(def default
|
||||||
(let [r (->> "net/deertopia/doerg/config.edn"
|
(let [r (-> "net/deertopia/doerg/config.edn"
|
||||||
io/resource read-config)]
|
io/resource (read-config (System/getenv "DOERG_CONFIG")))]
|
||||||
(if (s/invalid? r)
|
(if (s/invalid? r)
|
||||||
(throw (IllegalArgumentException.
|
(throw (IllegalArgumentException.
|
||||||
"default config is bad!"))
|
"default config is bad!"))
|
||||||
|
|||||||
5
publisher/resources/net/deertopia/publisher/config.edn
Normal file
5
publisher/resources/net/deertopia/publisher/config.edn
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#:net.deertopia.publisher
|
||||||
|
{:state-directory #join [#or [#env XDG_STATE_HOME
|
||||||
|
#envf ["%s/.local/share" HOME]]
|
||||||
|
"/doerg-publisher"]
|
||||||
|
:org-roam-db-path #join [#env HOME "/.cache/emacs/org-roam.db"]}
|
||||||
@@ -1,17 +1,33 @@
|
|||||||
(ns net.deertopia.publisher.config
|
(ns net.deertopia.publisher.config
|
||||||
(:require [babashka.fs :as fs]
|
(:require [babashka.fs :as fs]
|
||||||
[clojure.spec.alpha :as s]
|
[clojure.spec.alpha :as s]
|
||||||
[net.deertopia.doerg.config :as doerg]))
|
[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 ::config
|
(s/def ::p/config
|
||||||
(s/keys :req [::state-directory
|
(s/keys :req [::p/state-directory
|
||||||
::org-roam-db-path]))
|
::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]
|
||||||
|
(->> files
|
||||||
|
(filter identity)
|
||||||
|
(map aero/read-config)
|
||||||
|
(apply merge)
|
||||||
|
(s/conform ::p/config)))
|
||||||
|
|
||||||
(def default
|
(def default
|
||||||
{::state-directory (fs/xdg-state-home "doerg-publisher")
|
(let [r (-> "net/deertopia/publisher/config.edn"
|
||||||
::org-roam-db-path (fs/file (fs/home) ".cache" "emacs" "org-roam.db")})
|
io/resource
|
||||||
|
(read-config (System/getenv "DOERG_PUBLISHER_CONFIG")))]
|
||||||
|
(if (s/invalid? r)
|
||||||
|
(throw (IllegalArgumentException.
|
||||||
|
"default config is bad!"))
|
||||||
|
r)))
|
||||||
|
|
||||||
(def ^:dynamic *cfg* default)
|
(def ^:dynamic *cfg* default)
|
||||||
|
|
||||||
(s/def ::state-directory ::doerg/file)
|
|
||||||
(s/def ::org-roam-db-path ::doerg/file)
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
[net.deertopia.publisher.config :as cfg]
|
[net.deertopia.publisher.config :as cfg]
|
||||||
[net.deertopia.publisher.elisp :as elisp]
|
[net.deertopia.publisher.elisp :as elisp]
|
||||||
[net.deertopia.publisher.slug :as slug]
|
[net.deertopia.publisher.slug :as slug]
|
||||||
|
[net.deertopia.publisher :as-alias publisher]
|
||||||
[next.jdbc :as sql])
|
[next.jdbc :as sql])
|
||||||
(:import (java.util UUID)))
|
(:import (java.util UUID)))
|
||||||
|
|
||||||
@@ -11,7 +12,7 @@
|
|||||||
|
|
||||||
(defonce ^:dynamic *use-db-cache?* true)
|
(defonce ^:dynamic *use-db-cache?* true)
|
||||||
|
|
||||||
(def db-path (-> cfg/*cfg* ::cfg/org-roam-db-path
|
(def db-path (-> cfg/*cfg* ::publisher/org-roam-db-path
|
||||||
fs/expand-home str))
|
fs/expand-home str))
|
||||||
|
|
||||||
(def db {:dbtype "sqlite"
|
(def db {:dbtype "sqlite"
|
||||||
|
|||||||
Reference in New Issue
Block a user