|
16 | 16 | (def cli-opts
|
17 | 17 | [["-h" "--help"]
|
18 | 18 | ["-v" "--verbose" "Print debug information"]
|
| 19 | + ["-p" "--nrepl-port PORT" "Start nrepl on port. Defaults to 0 (= random)" |
| 20 | + :default 0 |
| 21 | + :parse-fn #(Integer/parseInt %)] |
| 22 | + ["-b" "--nrepl-bind ADDR" "Bind address of nrepl, by default \"127.0.0.1\"." |
| 23 | + :default "127.0.0.1"] |
19 | 24 | [nil "--cider-nrepl" "Include the CIDER nREPL middleware"]
|
20 | 25 | [nil "--refactor-nrepl" "Include the refactor-nrepl middleware"]
|
21 | 26 | [nil "--cider-connect" "Automatically connect CIDER"]
|
|
136 | 141 | (:cider-nrepl options)
|
137 | 142 | (assoc-dep 'cider/cider-nrepl {:mvn/version (or (emacs-cider-version) default-cider-version)})
|
138 | 143 | (:refactor-nrepl options)
|
139 |
| - (assoc-dep 'refactor-nrepl/refactor-nrepl {:mvn/version (or (emacs-refactor-nrepl-version) default-refactor-nrepl-version)} )))) |
| 144 | + (assoc-dep 'refactor-nrepl/refactor-nrepl {:mvn/version (or (emacs-refactor-nrepl-version) default-refactor-nrepl-version)})))) |
140 | 145 |
|
141 |
| -(defn find-free-nrepl-port [ctx] |
142 |
| - (assoc ctx :nrepl-port (free-port))) |
| 146 | +(defn get-nrepl-port [ctx] |
| 147 | + (assoc ctx :nrepl-port (or (get-in ctx [:options :nrepl-port]) |
| 148 | + (free-port)))) |
| 149 | + |
| 150 | +(defn get-nrepl-bind [ctx] |
| 151 | + (assoc ctx :nrepl-bind (get-in ctx [:options :nrepl-bind]))) |
143 | 152 |
|
144 | 153 | (defn maybe-read-edn [f]
|
145 | 154 | (when (.exists f) (edn/read-string (slurp f))))
|
146 | 155 |
|
147 | 156 | (defn read-deps-edn [ctx]
|
148 |
| - (let [deps-edn (edn/read-string (slurp "deps.edn") ) |
| 157 | + (let [deps-edn (edn/read-string (slurp "deps.edn")) |
149 | 158 | deps-system (maybe-read-edn
|
150 | 159 | (io/file (System/getProperty "user.home") ".clojure" "deps.edn"))
|
151 | 160 |
|
|
259 | 268 | (catch Exception e
|
260 | 269 | (println "(user/go) failed" e))))))
|
261 | 270 |
|
262 |
| -(defn run-nrepl-server [{:keys [nrepl-port middleware] :as ctx}] |
| 271 | +(defn run-nrepl-server [{:keys [nrepl-port nrepl-bind middleware] :as ctx}] |
263 | 272 | (-> ctx
|
264 | 273 | (update :requires conj 'nrepl.cmdline)
|
265 | 274 | (update :eval-forms (fnil conj [])
|
266 |
| - `(nrepl.cmdline/-main "--port" ~(str nrepl-port) "--middleware" ~(pr-str middleware))))) |
| 275 | + `(nrepl.cmdline/-main "--port" ~(str nrepl-port) |
| 276 | + "--bind" ~(str nrepl-bind) |
| 277 | + "--middleware" ~(pr-str middleware))))) |
267 | 278 |
|
268 | 279 | (defn register-watch-handlers [ctx handlers]
|
269 | 280 | (update ctx
|
|
380 | 391 | (:extra-deps ctx)))
|
381 | 392 | ctx)
|
382 | 393 |
|
383 |
| -(def before-steps [find-free-nrepl-port |
| 394 | +(def before-steps [ |
384 | 395 | read-deps-edn
|
385 | 396 | handle-cli-args
|
| 397 | + get-nrepl-port |
| 398 | + get-nrepl-bind |
386 | 399 | compute-middleware
|
387 | 400 | ;; inject dependencies and enable behavior
|
388 | 401 | compute-extra-deps
|
|
0 commit comments