diff options
| author | eltrac <hi@eltr.ac> | 2026-10-20 16:38:11 +0800 |
|---|---|---|
| committer | eltrac <hi@eltr.ac> | 2026-10-21 10:18:00 +0800 |
| commit | 4ab2ebf1f90170a8f9436f5260b4c740a447baf4 (patch) | |
| tree | 50bf4de6ffaf62e3e85b2205f54536033d6e8709 /src | |
| parent | 5d44b728c4d9cbe2960a02f7059d32c8df426926 (diff) | |
core: add embeded nREPL server
Diffstat (limited to 'src')
| -rw-r--r-- | src/weepinbell/core.clj | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/weepinbell/core.clj b/src/weepinbell/core.clj index 2435029..cb0033a 100644 --- a/src/weepinbell/core.clj +++ b/src/weepinbell/core.clj @@ -8,6 +8,7 @@ [weepinbell.storage.worker :as worker] [clojure.core.async :refer [chan >!! <!!]] [taoensso.timbre :as timbre] + [nrepl.server :as nrepl] [weepinbell.migration :as m] ;; two main subsystems' facades [weepinbell.processor.facade :refer [start-processor]] @@ -58,21 +59,28 @@ (let [config-file (or (System/getenv "WEEPINBELL_CONFIG") "config.edn") config (load-config config-file) log-level (or (System/getenv "WEEPINBELL_LOGLEVEL") - (:log-level config) :info)] + (:log-level config) :info) + nrepl-port (:nrepl-port config)] (timbre/merge-config! {:min-level log-level}) - (timbre/info "starting weepinbell...") + (let [done-chan (chan 1) - stop-system (start-system config)] - ;; Register signal handlers for SIGINT and SIGTERM + stop-system (do (timbre/info "starting weepinbell...") + (start-system config)) + nrepl-server (when nrepl-port + (timbre/info "starting nREPL server on port" nrepl-port) + (nrepl/start-server :port nrepl-port))] + ;; Register signal handlers for SIGINT and SIGTERM (doseq [signal ["INT" "TERM"]] (Signal/handle (Signal. signal) (reify SignalHandler (handle [_ sig] (stop-system) + (when nrepl-server + (nrepl/stop-server nrepl-server)) (timbre/info "signal" (.getName sig) "received." "gracefully shut down weepinbell.") (>!! done-chan true))))) - ;; block til signal received + ;; block til signal received (<!! done-chan)))) (defn -main [& args] |
