in pkg/plan/stream.go [52:81]
func StreamJSON(channel <-chan TrackResponse, device io.Writer, pretty bool) error {
var encoder = json.NewEncoder(device)
if pretty {
encoder.SetIndent("", " ")
}
var lastStreamed = make(map[string]string)
err := StreamFunc(channel, func(res TrackResponse) {
if _, ok := lastStreamed[res.ID]; !ok {
lastStreamed[res.ID] = ""
}
if res.Err != nil {
res.Err = apierror.NewJSONError(res.Err)
lastStreamed[res.ID] = res.Step
_ = encoder.Encode(res)
}
if res.Step != lastStreamed[res.ID] {
lastStreamed[res.ID] = res.Step
_ = encoder.Encode(res)
}
})
var merr *multierror.Prefixed
if errors.As(err, &merr) {
merr.SkipPrefixing = true
}
return multierror.WithFormat(err, "json")
}