Don't exit after eval in repl task either.
This commit is contained in:
parent
94790ce255
commit
aed1a4b0c2
2 changed files with 17 additions and 14 deletions
|
@ -28,7 +28,8 @@
|
||||||
(let [[reader writer socket] (connect)]
|
(let [[reader writer socket] (connect)]
|
||||||
(.write writer (str (pr-str form) "\n" '(.close *in*) "\n"))
|
(.write writer (str (pr-str form) "\n" '(.close *in*) "\n"))
|
||||||
(.flush writer)
|
(.flush writer)
|
||||||
(try (eval-client-loop reader writer (make-array Character/TYPE 100) socket)
|
(try (eval-client-loop reader writer
|
||||||
|
(make-array Character/TYPE 1000) socket)
|
||||||
0
|
0
|
||||||
(catch Exception e
|
(catch Exception e
|
||||||
(.printStackTrace e) 1)
|
(.printStackTrace e) 1)
|
||||||
|
@ -56,12 +57,12 @@
|
||||||
(let [[port host] (repl-socket-on project)]
|
(let [[port host] (repl-socket-on project)]
|
||||||
(println welcome)
|
(println welcome)
|
||||||
(future
|
(future
|
||||||
(eval-in-project project `(do ~(repl-server project host port
|
(binding [*exit-when-done* false]
|
||||||
:prompt '(constantly ""))
|
(eval-in-project project `(do ~(repl-server project host port :silently
|
||||||
(symbol ""))))
|
:prompt '(constantly ""))
|
||||||
|
(symbol "")))))
|
||||||
(let [connect #(poll-repl-connection port 0 vector)]
|
(let [connect #(poll-repl-connection port 0 vector)]
|
||||||
(binding [eval-in-project (partial eval-in-repl connect)
|
(binding [eval-in-project (partial eval-in-repl connect)
|
||||||
*exit-when-done* false
|
|
||||||
exit (fn [_] (println "\n"))]
|
exit (fn [_] (println "\n"))]
|
||||||
(task-repl project)))
|
(task-repl project)))
|
||||||
(exit)))
|
(exit)))
|
||||||
|
|
|
@ -2,12 +2,12 @@
|
||||||
"Start a repl session either with the current project or standalone."
|
"Start a repl session either with the current project or standalone."
|
||||||
(:require [clojure.main])
|
(:require [clojure.main])
|
||||||
(:use [leiningen.core :only [exit]]
|
(:use [leiningen.core :only [exit]]
|
||||||
[leiningen.compile :only [eval-in-project]]
|
[leiningen.compile :only [eval-in-project *exit-when-done*]]
|
||||||
[clojure.java.io :only [copy]])
|
[clojure.java.io :only [copy]])
|
||||||
(:import [java.net Socket]
|
(:import [java.net Socket]
|
||||||
[java.io OutputStreamWriter InputStreamReader File]))
|
[java.io OutputStreamWriter InputStreamReader File]))
|
||||||
|
|
||||||
(defn repl-server [project host port & repl-options]
|
(defn repl-server [project host port silently & repl-options]
|
||||||
(let [init-form [:init `#(let [is# ~(:repl-init-script project)
|
(let [init-form [:init `#(let [is# ~(:repl-init-script project)
|
||||||
mn# '~(:main project)]
|
mn# '~(:main project)]
|
||||||
(when (and is# (.exists (File. (str is#))))
|
(when (and is# (.exists (File. (str is#))))
|
||||||
|
@ -53,7 +53,8 @@
|
||||||
(.printStackTrace e#)))
|
(.printStackTrace e#)))
|
||||||
(recur)))
|
(recur)))
|
||||||
.start)
|
.start)
|
||||||
(format "REPL started; server listening on %s:%s." ~host ~port)))))
|
(when-not ~silently
|
||||||
|
(println "REPL started; server listening on" ~host ":" ~port))))))
|
||||||
|
|
||||||
(defn copy-out-loop [reader]
|
(defn copy-out-loop [reader]
|
||||||
(let [buffer (make-array Character/TYPE 1000)]
|
(let [buffer (make-array Character/TYPE 1000)]
|
||||||
|
@ -105,12 +106,13 @@ Running outside a project directory will start a standalone repl session."
|
||||||
([] (repl {}))
|
([] (repl {}))
|
||||||
([project]
|
([project]
|
||||||
(let [[port host] (repl-socket-on project)
|
(let [[port host] (repl-socket-on project)
|
||||||
server-form (apply repl-server project host port
|
server-form (apply repl-server project host port false
|
||||||
(:repl-options project))]
|
(:repl-options project))]
|
||||||
(future (try (if (empty? project)
|
(future (binding [*exit-when-done* false]
|
||||||
(clojure.main/with-bindings
|
(try (if (empty? project)
|
||||||
(println (eval server-form)))
|
(clojure.main/with-bindings
|
||||||
(eval-in-project project server-form))
|
(println (eval server-form)))
|
||||||
(catch Exception _)))
|
(eval-in-project project server-form))
|
||||||
|
(catch Exception _))))
|
||||||
(poll-repl-connection port)
|
(poll-repl-connection port)
|
||||||
(exit))))
|
(exit))))
|
||||||
|
|
Loading…
Reference in a new issue