diff options
| author | eltrac <hi@eltr.ac> | 2026-10-06 18:04:31 +0800 |
|---|---|---|
| committer | eltrac <hi@eltr.ac> | 2026-10-06 18:41:19 +0800 |
| commit | fd654982376da9d913c4867f70aade62a75abe01 (patch) | |
| tree | 2e97947091cba885a1321625035cf6e73700bf30 /dev/user.clj | |
| parent | 4030d4d921fed3e9abea28268fe499fbaedb5dfc (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.clj | 27 |
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")) + |
