nrepl_component.clj 677 B

12345678910111213141516171819202122232425
  1. (ns attendant.nrepl-component
  2. (:require
  3. [cider.nrepl :refer [cider-nrepl-handler]]
  4. [clojure.java.io :as io]
  5. [com.stuartsierra.component :as component]
  6. [nrepl.server :refer [start-server stop-server]]))
  7. (defrecord NreplServer [port]
  8. component/Lifecycle
  9. (start [this]
  10. (println "starting nrepl server" port this)
  11. (spit ".nrepl-port" port)
  12. (->> (start-server
  13. :bind "0.0.0.0"
  14. :port port
  15. :handler cider-nrepl-handler)
  16. (assoc this :nrepl-server)))
  17. (stop [this]
  18. (println "stopping nrepl server" (:nrepl-server this))
  19. (io/delete-file ".nrepl-port" true)
  20. (stop-server (:nrepl-server this))
  21. this))