Refactor Reduce to also output extra text

sleep-stdin-bug
Anton Medvedev 2 years ago
parent e05e917a6f
commit 36af65042c

@ -47,23 +47,23 @@ func Reduce(object interface{}, args []string, theme Theme) {
panic("unknown lang") panic("unknown lang")
} }
var stdout, stderr bytes.Buffer
cmd.Stdin = strings.NewReader(Stringify(object)) cmd.Stdin = strings.NewReader(Stringify(object))
cmd.Stdout = &stdout output, err := cmd.CombinedOutput()
cmd.Stderr = &stderr
err := cmd.Run()
if err == nil { if err == nil {
dec := json.NewDecoder(&stdout) dec := json.NewDecoder(bytes.NewReader(output))
dec.UseNumber() dec.UseNumber()
jsonObject, err := Parse(dec) jsonObject, err := Parse(dec)
if err == nil { if err != nil {
if str, ok := jsonObject.(string); ok { fmt.Print(string(output))
fmt.Println(str) return
} else { }
fmt.Println(PrettyPrint(jsonObject, 1, theme)) if str, ok := jsonObject.(string); ok {
} fmt.Println(str)
} else { } else {
_, _ = fmt.Fprint(os.Stderr, stderr.String()) fmt.Println(PrettyPrint(jsonObject, 1, theme))
}
if dec.InputOffset() < int64(len(output)) {
fmt.Print(string(output[dec.InputOffset():]))
} }
} else { } else {
exitCode := 1 exitCode := 1
@ -71,7 +71,7 @@ func Reduce(object interface{}, args []string, theme Theme) {
if ok { if ok {
exitCode = status.ExitCode() exitCode = status.ExitCode()
} }
_, _ = fmt.Fprint(os.Stderr, stderr.String()) fmt.Print(string(output))
os.Exit(exitCode) os.Exit(exitCode)
} }
} }

Loading…
Cancel
Save