summaryrefslogtreecommitdiff
path: root/utils/streamformatter.go
diff options
context:
space:
mode:
Diffstat (limited to 'utils/streamformatter.go')
-rw-r--r--utils/streamformatter.go29
1 files changed, 29 insertions, 0 deletions
diff --git a/utils/streamformatter.go b/utils/streamformatter.go
index 8876fa5cb7..d2758d3ca6 100644
--- a/utils/streamformatter.go
+++ b/utils/streamformatter.go
@@ -3,6 +3,7 @@ package utils
import (
"encoding/json"
"fmt"
+ "io"
)
type StreamFormatter struct {
@@ -90,3 +91,31 @@ func (sf *StreamFormatter) Used() bool {
func (sf *StreamFormatter) Json() bool {
return sf.json
}
+
+type StdoutFormater struct {
+ io.Writer
+ *StreamFormatter
+}
+
+func (sf *StdoutFormater) Write(buf []byte) (int, error) {
+ formattedBuf := sf.StreamFormatter.FormatStream(string(buf))
+ n, err := sf.Writer.Write(formattedBuf)
+ if n != len(formattedBuf) {
+ return n, io.ErrShortWrite
+ }
+ return len(buf), err
+}
+
+type StderrFormater struct {
+ io.Writer
+ *StreamFormatter
+}
+
+func (sf *StderrFormater) Write(buf []byte) (int, error) {
+ formattedBuf := sf.StreamFormatter.FormatStream("\033[91m" + string(buf) + "\033[0m")
+ n, err := sf.Writer.Write(formattedBuf)
+ if n != len(formattedBuf) {
+ return n, io.ErrShortWrite
+ }
+ return len(buf), err
+}