github.com/lineaje-labs/syft@v0.98.1-0.20231227153149-9e393f60ff1b/cmd/syft/internal/ui/log_writer.go (about) 1 package ui 2 3 import ( 4 "bufio" 5 "bytes" 6 "io" 7 "strings" 8 9 "github.com/lineaje-labs/syft/internal/log" 10 ) 11 12 func newLogWriter() io.Writer { 13 l := logWriter{} 14 l.r = bufio.NewReader(&l.buf) 15 return &l 16 } 17 18 type logWriter struct { 19 buf bytes.Buffer 20 r *bufio.Reader 21 } 22 23 func (l *logWriter) Write(data []byte) (n int, err error) { 24 l.buf.Write(data) 25 s, err := l.r.ReadString('\n') 26 s = strings.TrimRight(s, "\n") 27 for s != "" { 28 log.Trace("[unexpected stdout] " + s) 29 n += len(s) 30 if err != nil { 31 break 32 } 33 s, err = l.r.ReadString('\n') 34 s = strings.TrimRight(s, "\n") 35 } 36 return n, err 37 }