From df56747d6def3886efa59340e1ff038b48fb10ec Mon Sep 17 00:00:00 2001 From: pauljako Date: Wed, 5 Mar 2025 13:50:06 +0100 Subject: [PATCH] feat(run-pkg): added start-command-pipe listener --- run-pkg/main.go | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/run-pkg/main.go b/run-pkg/main.go index d2f227c..8e7f0d7 100644 --- a/run-pkg/main.go +++ b/run-pkg/main.go @@ -19,7 +19,7 @@ func main() { var arguments string var program string var workdir string - var exit_code int = 0 + var exit_code int = 1 fallback_instance_path, ins_err := get_instance_path() @@ -70,11 +70,37 @@ func main() { } ln.Write(cmd) + + pipe_running := false + for !pipe_running { + buffer := make([]byte, 1024) + n, err := ln.Read(buffer) + objmap := make(map[string]interface{}) + if err == io.EOF { + break + } else if err != nil { + log.Fatal(err) + } + err = json.Unmarshal(buffer[:n], &objmap) + if err != nil { + os.Stdout.Write(buffer[:n]) + } else { + command, has := objmap["command"] + if has && command == "start-command-pipe" { + pipe_running = true + break + } else { + os.Stdout.Write(buffer[:n]) + } + } + } + go func() { - for { + for pipe_running { buffer := make([]byte, 1024) n, err := os.Stdin.Read(buffer) if err == io.EOF { + pipe_running = false break } else if err != nil { log.Fatal(err) @@ -83,11 +109,12 @@ func main() { } }() func() { - for { + for pipe_running { buffer := make([]byte, 1024) n, err := ln.Read(buffer) objmap := make(map[string]interface{}) if err == io.EOF { + pipe_running = false break } else if err != nil { log.Fatal(err) @@ -101,6 +128,7 @@ func main() { status_code, has := objmap["status_code"] if has { exit_code = int(status_code.(float64)) + pipe_running = false break } else { os.Stdout.Write(buffer[:n])