in cli/commands/utils.go [44:69]
func divertStdoutToString(fn func() error) (string, error) {
previous := os.Stdout
defer func() {
os.Stdout = previous
}()
r, w, _ := os.Pipe()
os.Stdout = w
err := fn()
if err != nil {
return "", err
}
errc := make(chan error)
var buf bytes.Buffer
go func() {
_, err := io.Copy(&buf, r)
errc <- err
}()
w.Close()
err = <-errc
output := strings.TrimSpace(buf.String())
return output, err
}