|
@@ -0,0 +1,24 @@
|
|
|
+(ns attendant.nrepl-component
|
|
|
+ (:require
|
|
|
+ [cider.nrepl :refer [cider-nrepl-handler]]
|
|
|
+ [clojure.java.io :as io]
|
|
|
+ [com.stuartsierra.component :as component]
|
|
|
+ [nrepl.server :refer [start-server stop-server]]))
|
|
|
+
|
|
|
+(defrecord NreplServer [port]
|
|
|
+ component/Lifecycle
|
|
|
+ (start [this]
|
|
|
+ (println "starting nrepl server" port this)
|
|
|
+ (spit ".nrepl-port" port)
|
|
|
+ (->> (start-server
|
|
|
+ :bind "0.0.0.0"
|
|
|
+ :port port
|
|
|
+ :handler cider-nrepl-handler)
|
|
|
+ (assoc this :nrepl-server)))
|
|
|
+
|
|
|
+ (stop [this]
|
|
|
+ (println "stopping nrepl server" (:nrepl-server this))
|
|
|
+ (io/delete-file ".nrepl-port" true)
|
|
|
+ (stop-server (:nrepl-server this))
|
|
|
+ this))
|
|
|
+
|