feat(run-pkg): added start-command-pipe listener

This commit is contained in:
Paul Fey 2025-03-05 13:50:06 +01:00
parent 486280fdf3
commit df56747d6d

View file

@ -19,7 +19,7 @@ func main() {
var arguments string var arguments string
var program string var program string
var workdir string var workdir string
var exit_code int = 0 var exit_code int = 1
fallback_instance_path, ins_err := get_instance_path() fallback_instance_path, ins_err := get_instance_path()
@ -70,20 +70,9 @@ func main() {
} }
ln.Write(cmd) ln.Write(cmd)
go func() {
for { pipe_running := false
buffer := make([]byte, 1024) for !pipe_running {
n, err := os.Stdin.Read(buffer)
if err == io.EOF {
break
} else if err != nil {
log.Fatal(err)
}
ln.Write(buffer[:n])
}
}()
func() {
for {
buffer := make([]byte, 1024) buffer := make([]byte, 1024)
n, err := ln.Read(buffer) n, err := ln.Read(buffer)
objmap := make(map[string]interface{}) objmap := make(map[string]interface{})
@ -93,6 +82,44 @@ func main() {
log.Fatal(err) log.Fatal(err)
} }
err = json.Unmarshal(buffer[:n], &objmap) 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 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)
}
ln.Write(buffer[:n])
}
}()
func() {
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)
}
err = json.Unmarshal(buffer[:n], &objmap)
if err != nil { if err != nil {
os.Stdout.Write(buffer[:n]) os.Stdout.Write(buffer[:n])
} else { } else {
@ -101,6 +128,7 @@ func main() {
status_code, has := objmap["status_code"] status_code, has := objmap["status_code"]
if has { if has {
exit_code = int(status_code.(float64)) exit_code = int(status_code.(float64))
pipe_running = false
break break
} else { } else {
os.Stdout.Write(buffer[:n]) os.Stdout.Write(buffer[:n])