Compare commits
3 Commits
97b83f3516
...
c6d10b9776
| Author | SHA1 | Date | |
|---|---|---|---|
| c6d10b9776 | |||
| 06e6b8ebaf | |||
| 147c98ab61 |
@@ -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"}}
|
||||
|
||||
@@ -45,29 +45,35 @@
|
||||
(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.
|
||||
(defn load-config! [var spec files & {:as opts}]
|
||||
(alter-var-root var (constantly (read-config spec files opts))))
|
||||
|
||||
(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)
|
||||
|
||||
@@ -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)))
|
||||
)))
|
||||
|
||||
@@ -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"]}}}
|
||||
|
||||
20
publisher/dev/user.clj
Normal file
20
publisher/dev/user.clj
Normal file
@@ -0,0 +1,20 @@
|
||||
(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]))
|
||||
|
||||
(doerg-config/load-config! #'doerg-config/*cfg*
|
||||
::doerg/config
|
||||
doerg-config/sources
|
||||
:profile :dev)
|
||||
|
||||
(doerg-config/load-config! #'publisher-config/*cfg*
|
||||
::publisher/config
|
||||
publisher-config/sources
|
||||
:profile :dev)
|
||||
|
||||
(when (nil? (server/status))
|
||||
(server/start!))
|
||||
@@ -3,4 +3,4 @@
|
||||
#envf ["%s/.local/share" HOME]]
|
||||
"/doerg-publisher"]
|
||||
:org-roam-db-path #join [#env HOME "/.cache/emacs/org-roam.db"]
|
||||
:port 8080}
|
||||
:port #profile {:default 8080}}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -24,8 +24,6 @@
|
||||
[babashka.fs :as fs]
|
||||
[aero.core :as aero]))
|
||||
|
||||
(def ^:const html-dir (-> cfg/*cfg* ::publisher/state-directory))
|
||||
|
||||
|
||||
;;; Routes
|
||||
|
||||
|
||||
BIN
publisher/test/net/deertopia/publisher/roam-test.db
Normal file
BIN
publisher/test/net/deertopia/publisher/roam-test.db
Normal file
Binary file not shown.
@@ -0,0 +1,7 @@
|
||||
:PROPERTIES:
|
||||
:ID: 23ee464d-b13e-4649-826f-622d0edef24e
|
||||
:DeertopiaVisibility: public
|
||||
:END:
|
||||
#+title: awesome file
|
||||
|
||||
wow!
|
||||
@@ -2,25 +2,41 @@
|
||||
(:require [net.deertopia.publisher.server :as sut]
|
||||
[reitit.ring]
|
||||
[clojure.test :as t]
|
||||
[clojure.set :as set]
|
||||
[net.deertopia.publisher.config :as cfg]
|
||||
[net.deertopia.publisher :as-alias publisher]))
|
||||
[net.deertopia.publisher.config :as publisher-cfg]
|
||||
[net.deertopia.doerg.config :as doerg-cfg]
|
||||
[net.deertopia.publisher :as-alias publisher]
|
||||
[net.deertopia.doerg :as-alias doerg]))
|
||||
|
||||
(t/use-fixtures
|
||||
:once (fn [f]
|
||||
(binding [doerg-cfg/*cfg*
|
||||
(doerg-cfg/read-config
|
||||
::doerg/config doerg-cfg/sources
|
||||
:profile :test)
|
||||
publisher-cfg/*cfg*
|
||||
(doerg-cfg/read-config
|
||||
::publisher/config publisher-cfg/sources
|
||||
:profile :test)]
|
||||
(f))))
|
||||
|
||||
(defn with-server [f]
|
||||
(let [was-already-running? (= :running (sut/status))]
|
||||
(when-not was-already-running?
|
||||
(sut/start!))
|
||||
(f)
|
||||
(when-not was-already-running?
|
||||
(sut/stop!))))
|
||||
|
||||
(t/deftest server-is-running
|
||||
;; 서버가 벌써 시작한 다음에 이 테스트 하면 잘못됩니다.
|
||||
(assert (not= :running (sut/status)))
|
||||
(sut/start!)
|
||||
(t/is (= :running (sut/status)))
|
||||
(sut/stop!))
|
||||
|
||||
(t/deftest can-get-real-server-root
|
||||
;; 서버가 벌써 시작한 다음에 이 테스트 하면 잘못됩니다.
|
||||
(assert (not= :running (sut/status)))
|
||||
(sut/start!)
|
||||
(t/is (->> (format "http://localhost:%d" (::publisher/port cfg/*cfg*))
|
||||
slurp
|
||||
string?))
|
||||
(sut/stop!))
|
||||
;; 서버는 벌써 시작한 다음에 이 테스트 하면 잘못됩니다.
|
||||
;; (assert (not= :running (sut/status)))
|
||||
(with-server
|
||||
(fn []
|
||||
(t/is (= :running (sut/status)))
|
||||
(t/is (->> (format "http://localhost:%d"
|
||||
(::publisher/port publisher-cfg/*cfg*))
|
||||
slurp
|
||||
string?)))))
|
||||
|
||||
#_
|
||||
(t/deftest get-nonexistent-node
|
||||
|
||||
Reference in New Issue
Block a user