-
-
Save pyrmont/73d10c74d14f26772fd276c38ee3490d to your computer and use it in GitHub Desktop.
| {:deps {org.clojure/clojure {:mvn/version "1.10.1"} | |
| org.clojure/clojurescript {:mvn/version "1.10.597"}} | |
| :paths ["src" "resources"] | |
| :aliases {:fig {:extra-deps | |
| {com.bhauman/rebel-readline-cljs {:mvn/version "0.1.4"} | |
| com.bhauman/figwheel-main {:mvn/version "0.2.4"}} | |
| :extra-paths ["target" "test"]} | |
| :build {:main-opts ["-m" "figwheel.main" "-b" "dev" "-r"]} | |
| :min {:main-opts ["-m" "figwheel.main" "-O" "advanced" "-bo" "dev"]} | |
| :release {:main-opts ["-m" "figwheel.main" "-bo" "release"]} | |
| :remote {:main-opts ["-m" "figwheel.main" "-b" "remote" "-r"]} | |
| :nrepl {:extra-deps | |
| {nrepl/nrepl {:mvn/version "0.7.0"} | |
| cider/piggieback {:mvn/version "0.4.2"} | |
| cider/cider-nrepl {:mvn/version "0.24.0"}} | |
| :main-opts ["-m" "figwheel.nrepl" "-b" "remote"]}}} |
| (ns figwheel.nrepl | |
| (:require [clojure.java.io :as io] | |
| [clojure.string :as string] | |
| [figwheel.main.api :as fig] | |
| [nrepl.server :as server])) | |
| (def port-file ".nrepl-port") | |
| (def nrepl-port 7888) | |
| (defonce nrepl-server (atom nil)) | |
| (defn nrepl-handler [] | |
| (require 'cider.nrepl) | |
| (ns-resolve 'cider.nrepl 'cider-nrepl-handler)) | |
| (defn start-nrepl-server! [] | |
| (reset! nrepl-server | |
| (server/start-server :port nrepl-port | |
| :handler (nrepl-handler))) | |
| (println "CIDER nREPL server started on port" nrepl-port) | |
| (spit port-file nrepl-port)) | |
| (defn stop-nrepl-server! [] | |
| (when (not (nil? @nrepl-server)) | |
| (server/stop-server @nrepl-server) | |
| (println "CIDER nREPL server on port" nrepl-port "stopped") | |
| (reset! nrepl-server nil) | |
| (io/delete-file port-file true))) | |
| (defn parse-command-args [args] | |
| (if (nil? args) | |
| {} | |
| (->> args | |
| (reduce (fn [as a] | |
| (if (string/starts-with? a "-") | |
| (conj as a true) | |
| (conj (pop as) a))) | |
| []) | |
| (apply hash-map)))) | |
| (defn -main [& args] | |
| (let [switches (parse-command-args args) | |
| build (switches "-b")] | |
| (start-nrepl-server!) | |
| (-> (new java.io.File port-file) (.deleteOnExit)) | |
| (fig/start {:rebel-readline false :mode :serve} build) | |
| (fig/cljs-repl build))) |
I had the same problem with Rebel-readline not exiting correctly. What worked for me was calling (System/exit 0) after starting rebel. E.g. here's what it roughly looks like in my main:
(nrepl/start!)
(fig/start "dev")
(fig/cljs-repl "dev")
(rebel/-main) ; blocking call
(System/exit 0)
@thiru Sorry to have taken so long to respond. Are you able to share more of the file you're running to set everything up? I wasn't able to get things to work but I suspect I didn't have all the pieces set up the way you do.
Hey there, sorry for the late response as well. I didn't have a public repo with what I outlined. I just opened up a private repo that doesn't use Conjure yet but it has the rebel-readline bit, which is the problem anyway:
https://github.com/thiru/fileworthy2/blob/master/dev/user.clj
Note if you remove the (System/exit 0) call it hangs.
Hey @thiru that file seems to have been deleted?
Oops, I'm not sure why I put a link to a private repo! Maybe this repo will help @EdwardIII?
@thiru Thanks!
A couple of notes:
The
nrepl.cljfile should be placed insrc/figwheel/nrepl.clj.To connect from Conjure:
The
figwheel.nrepl/-mainfunction disables rebel-readline at line 53 because I can't get rebel-readline to exit cleanly when called via thefigwheel.main.apinamespace. This in turn causes the nREPL port file to not be deleted. If anyone knows how to fix that, please comment!