sq/cli/output/jsonw/jsonw.go

30 lines
673 B
Go
Raw Normal View History

// Package jsonw implements output writers for JSON.
package jsonw
import (
"io"
"github.com/neilotoole/sq/cli/output"
"github.com/neilotoole/sq/cli/output/jsonw/internal"
jcolorenc "github.com/neilotoole/sq/cli/output/jsonw/internal/jcolorenc"
"github.com/neilotoole/sq/libsq/core/errz"
)
// writeJSON prints a JSON representation of v to out, using specs
// from pr.
func writeJSON(out io.Writer, pr *output.Printing, v any) error {
enc := jcolorenc.NewEncoder(out)
enc.SetColors(internal.NewColors(pr))
enc.SetEscapeHTML(false)
if pr.Pretty {
enc.SetIndent("", pr.Indent)
}
err := enc.Encode(v)
if err != nil {
return errz.Err(err)
}
return nil
}