mirror of
https://github.com/neilotoole/sq.git
synced 2024-12-29 19:24:26 +03:00
42 lines
800 B
Go
42 lines
800 B
Go
package tablew
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"strings"
|
|
|
|
"github.com/neilotoole/sq/cli/output"
|
|
"github.com/neilotoole/sq/libsq/core/errz"
|
|
)
|
|
|
|
// errorWriter implements output.ErrorWriter.
|
|
type errorWriter struct {
|
|
w io.Writer
|
|
pr *output.Printing
|
|
}
|
|
|
|
// NewErrorWriter returns an output.ErrorWriter that
|
|
// outputs in text format.
|
|
func NewErrorWriter(w io.Writer, pr *output.Printing) output.ErrorWriter {
|
|
return &errorWriter{w: w, pr: pr}
|
|
}
|
|
|
|
// Error implements output.ErrorWriter.
|
|
func (w *errorWriter) Error(err error) {
|
|
fmt.Fprintln(w.w, w.pr.Error.Sprintf("sq: %v", err))
|
|
if !w.pr.Verbose {
|
|
return
|
|
}
|
|
|
|
stacks := errz.Stack(err)
|
|
for i, stack := range stacks {
|
|
if i > 0 {
|
|
fmt.Fprintln(w.w)
|
|
}
|
|
|
|
s := fmt.Sprintf("%+v", stack)
|
|
s = strings.TrimSpace(s)
|
|
w.pr.Faint.Fprintln(w.w, s)
|
|
}
|
|
}
|