mirror of https://github.com/tinygo-org/tinygo.git
wasmstm32webassemblymicrocontrollerarmavrspiwasiadafruitarduinocircuitplayground-expressgpioi2cllvmmicrobitnrf51nrf52nrf52840samd21tinygo
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
819 B
39 lines
819 B
package main
|
|
|
|
import (
|
|
"io"
|
|
)
|
|
|
|
// ANSI escape codes for terminal colors.
|
|
const (
|
|
TermColorReset = "\x1b[0m"
|
|
TermColorYellow = "\x1b[93m"
|
|
)
|
|
|
|
// ColorWriter wraps an io.Writer but adds a prefix and a terminal color.
|
|
type ColorWriter struct {
|
|
Out io.Writer
|
|
Color string
|
|
Prefix string
|
|
line []byte
|
|
}
|
|
|
|
// Write implements io.Writer, but with an added prefix and terminal color.
|
|
func (w *ColorWriter) Write(p []byte) (n int, err error) {
|
|
for _, c := range p {
|
|
if c == '\n' {
|
|
w.line = append(w.line, []byte(TermColorReset)...)
|
|
w.line = append(w.line, '\n')
|
|
// Write this line.
|
|
_, err := w.Out.Write(w.line)
|
|
w.line = w.line[:0]
|
|
w.line = append(w.line, []byte(w.Color+w.Prefix)...)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
} else {
|
|
w.line = append(w.line, c)
|
|
}
|
|
}
|
|
return len(p), nil
|
|
}
|
|
|