From fec742194cfff9bdf6bbb65e0b1205a70924d8d9 Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Tue, 13 Oct 2020 11:29:41 +0200 Subject: [PATCH] wip --- src/babashka/pods/impl.clj | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/babashka/pods/impl.clj b/src/babashka/pods/impl.clj index d8cac87..5830fd2 100644 --- a/src/babashka/pods/impl.clj +++ b/src/babashka/pods/impl.clj @@ -227,15 +227,26 @@ (print (char v)) (recur)))))) +(defn read-port [pid] + (loop [] + (let [f (io/file (str ".babashka/pods/" pid ".port"))] + (if (.exists f) + (edn/read-string (slurp f)) + (recur))))) + (defn load-pod ([pod-spec] (load-pod pod-spec nil)) - ([pod-spec {:keys [:remove-ns :resolve]}] + ([pod-spec {:keys [:remove-ns :resolve :socket]}] (let [pod-spec (if (string? pod-spec) [pod-spec] pod-spec) pb (ProcessBuilder. ^java.util.List pod-spec) - _ (.redirectError pb java.lang.ProcessBuilder$Redirect/INHERIT) + _ (if socket + (.inheritIO pb) + (.redirectError pb java.lang.ProcessBuilder$Redirect/INHERIT)) _ (doto (.environment pb) (.put "BABASHKA_POD" "true")) p (.start pb) + pid (.pid p) + port (when socket (read-port pid)) stdin (.getOutputStream p) stdout (.getInputStream p) stdout (java.io.PushbackInputStream. stdout)