summaryrefslogtreecommitdiff
path: root/dev/user.clj
diff options
context:
space:
mode:
authoreltrac <hi@eltr.ac>2026-10-06 18:04:31 +0800
committereltrac <hi@eltr.ac>2026-10-06 18:41:19 +0800
commitfd654982376da9d913c4867f70aade62a75abe01 (patch)
tree2e97947091cba885a1321625035cf6e73700bf30 /dev/user.clj
parent4030d4d921fed3e9abea28268fe499fbaedb5dfc (diff)
dev: hot reloading
- add start/stop/restart/watch functions in 'user namespace (dev profile) - add lein alias `dev` that starts file watcher and REPL - every time source code is changed, `lein dev` reloads modified namespaces and restarts system - add `lein dev` to Contributors' Guide
Diffstat (limited to 'dev/user.clj')
-rw-r--r--dev/user.clj27
1 files changed, 27 insertions, 0 deletions
diff --git a/dev/user.clj b/dev/user.clj
new file mode 100644
index 0000000..2ebcdb0
--- /dev/null
+++ b/dev/user.clj
@@ -0,0 +1,27 @@
+(ns user
+ (:require [clj-reload.core :as reload]
+ [nextjournal.beholder :as beholder]
+ [weepinbell.core]))
+
+(reload/init
+ {:dirs ["src" "dev" "test"]})
+
+(defonce stop-fn (atom nil))
+
+(defn start []
+ {:pre [(nil? @stop-fn)]}
+ (reset! stop-fn (@(resolve 'weepinbell.core/start-system))))
+
+(defn stop []
+ {:pre [(fn? @stop-fn)]}
+ (@stop-fn)
+ (reset! stop-fn nil))
+
+(defn restart []
+ (stop)
+ (reload/reload)
+ (start))
+
+(defn watch []
+ (beholder/watch (fn [_] ((requiring-resolve 'user/restart))) "src"))
+