From 5b376d45eb346463c3c1846e690b45c27e249865 Mon Sep 17 00:00:00 2001 From: Thomas Heller Date: Fri, 23 Mar 2018 14:33:00 +0100 Subject: [PATCH] add fallback when the shadow-cljs CLI fails to connect if the server is dead but didn't clean up its files it should just continue starting a new process instead of doing nothing. --- src/main/shadow/cljs/npm/cli.cljs | 22 ++++++++++++++-------- src/main/shadow/cljs/npm/client.cljs | 8 +++++--- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/main/shadow/cljs/npm/cli.cljs b/src/main/shadow/cljs/npm/cli.cljs index feec7de2..4d2e8ddc 100644 --- a/src/main/shadow/cljs/npm/cli.cljs +++ b/src/main/shadow/cljs/npm/cli.cljs @@ -601,6 +601,17 @@ false ))))) +(defn do-start [project-root config args opts] + (cond + (:deps config) + (run-clojure project-root config args opts) + + (:lein config) + (run-lein project-root config args opts) + + :else + (run-standalone project-root config args opts))) + (defn ^:export main [args] ;; https://github.com/tapjs/signal-exit @@ -686,16 +697,11 @@ (server-start project-root config args opts)) server-running? - (client/run project-root config server-port-file opts args) - - (:deps config) - (run-clojure project-root config args opts) - - (:lein config) - (run-lein project-root config args opts) + (client/run project-root config server-port-file opts args + #(do-start project-root config args opts)) :else - (run-standalone project-root config args opts) + (do-start project-root config args opts) )))))))) (catch :default ex (print-error ex) diff --git a/src/main/shadow/cljs/npm/client.cljs b/src/main/shadow/cljs/npm/client.cljs index b793d1e9..1f0881f4 100644 --- a/src/main/shadow/cljs/npm/client.cljs +++ b/src/main/shadow/cljs/npm/client.cljs @@ -166,7 +166,9 @@ (js/process.stdin.removeListener "close" stop!) )))) -(defn run [project-root config server-port-file opts args] +(defn run + "attempts to connect to running server. if the connect fails calls callback" + [project-root config server-port-file opts args fallback] (let [cli-repl (-> (util/slurp server-port-file) (js/parseInt 10))] @@ -190,6 +192,6 @@ (.on socket "error" (fn [err] (println "shadow-cljs - socket connect failed, server process dead?") - (js/process.exit 1))) - )))) + (fallback err) + ))))))