OpenDiablo2/d2core/d2term/terminal_logger.go

47 lines
767 B
Go
Raw Normal View History

2020-06-29 01:40:52 +00:00
package d2term
import (
"bufio"
"bytes"
"io"
"strings"
)
type terminalLogger struct {
2020-12-21 20:46:58 +00:00
terminal *Terminal
buffer bytes.Buffer
writer io.Writer
2020-06-29 01:40:52 +00:00
}
func (tl *terminalLogger) Write(p []byte) (int, error) {
n, err := tl.buffer.Write(p)
if err != nil {
return n, err
}
reader := bufio.NewReader(&tl.buffer)
termBytes, _, err := reader.ReadLine()
2020-06-29 01:40:52 +00:00
if err != nil {
return n, err
}
line := string(termBytes)
2020-06-29 01:40:52 +00:00
lineLower := strings.ToLower(line)
switch {
case strings.Index(lineLower, "error") > 0:
2020-12-21 20:46:58 +00:00
tl.terminal.Errorf(line)
case strings.Index(lineLower, "warning") > 0:
2020-12-22 14:18:14 +00:00
tl.terminal.Warningf(line)
default:
2020-12-21 20:46:58 +00:00
tl.terminal.Printf(line)
2020-06-29 01:40:52 +00:00
}
return tl.writer.Write(p)
}
2020-12-21 20:46:58 +00:00
func (tl *terminalLogger) BindToTerminal(t *Terminal) {
2020-06-29 01:40:52 +00:00
tl.terminal = t
}