github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/internal/output/colorstyle/ansi.go (about) 1 //go:build !windows 2 // +build !windows 3 4 package colorstyle 5 6 import ( 7 "io" 8 9 "github.com/ActiveState/cli/internal/logging" 10 ) 11 12 type Styler struct { 13 writer io.Writer 14 } 15 16 var ansiStyleMap = map[Style]string{ 17 Default: "\x1b[39", 18 Dim: "\x1b[2", 19 Reset: "\x1b[0", 20 Reversed: "\x1b[7", 21 Bold: "\x1b[1", 22 Underline: "\x1b[4", 23 Black: "\x1b[30", 24 Red: "\x1b[31", 25 Green: "\x1b[32", 26 Yellow: "\x1b[33", 27 Blue: "\x1b[34", 28 Magenta: "\x1b[35", 29 Cyan: "\x1b[36", 30 White: "\x1b[37", 31 Orange: "\x1b[38;5;208", 32 } 33 34 func New(writer io.Writer) *Styler { 35 return &Styler{writer} 36 } 37 38 func (w *Styler) SetStyle(s Style, bright bool) { 39 resolvedStyle := ansiStyleMap[s] 40 if bright { 41 resolvedStyle = resolvedStyle + ";1" 42 } 43 _, err := w.writer.Write([]byte(resolvedStyle + "m")) 44 if err != nil { 45 logging.Error("Error writing to writer: %v", err) 46 } 47 }