From fd654982376da9d913c4867f70aade62a75abe01 Mon Sep 17 00:00:00 2001 From: eltrac Date: Tue, 6 Oct 2026 18:04:31 +0800 Subject: 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 --- dev/user.clj | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 dev/user.clj (limited to 'dev') 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")) + -- cgit v1.2.3