feat(run-pkg): added start-command-pipe listener
This commit is contained in:
parent
486280fdf3
commit
df56747d6d
1 changed files with 31 additions and 3 deletions
|
@ -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,11 +70,37 @@ func main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
ln.Write(cmd)
|
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() {
|
go func() {
|
||||||
for {
|
for pipe_running {
|
||||||
buffer := make([]byte, 1024)
|
buffer := make([]byte, 1024)
|
||||||
n, err := os.Stdin.Read(buffer)
|
n, err := os.Stdin.Read(buffer)
|
||||||
if err == io.EOF {
|
if err == io.EOF {
|
||||||
|
pipe_running = false
|
||||||
break
|
break
|
||||||
} else if err != nil {
|
} else if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
@ -83,11 +109,12 @@ func main() {
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
func() {
|
func() {
|
||||||
for {
|
for pipe_running {
|
||||||
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{})
|
||||||
if err == io.EOF {
|
if err == io.EOF {
|
||||||
|
pipe_running = false
|
||||||
break
|
break
|
||||||
} else if err != nil {
|
} else if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
@ -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])
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue