package utils import ( "bufio" "bytes" "fmt" "os" "os/exec" "strings" ) // RunGoCLICommand egecutes gocli with given args func RunGoCLICommand(cliPath string, args ...string) ([]byte, error) { var outBuf, errBuf bytes.Buffer cmd := exec.Command(cliPath, args...) cmd.Dir = "../" cmd.Stdout = &outBuf cmd.Stderr = &errBuf err := cmd.Run() if err != nil { fmt.Fprintf(os.Stderr, "GoCLI standard output\n%s\n", outBuf.String()) fmt.Fprintf(os.Stderr, "GoCLI error output\n%s\n", errBuf.String()) return nil, err } capture := false returnBuf := bytes.NewBuffer(nil) scanner := bufio.NewScanner(&outBuf) for scanner.Scan() { t := scanner.Text() if !capture { if strings.Contains(t, "Connected to tcp://192.168.66.") { capture = true } continue } _, err = returnBuf.Write([]byte(t)) if err != nil { return nil, err } } return returnBuf.Bytes(), nil }