termcolor
termcolor copied to clipboard
Detects whether a terminal supports colors
Termcolor

Detects what level of color support your terminal has. This package is heavily inspired by chalk's support-color module.
Install
go get github.com/efekarakus/termcolor
Examples
Colorize output by finding out which level of color your terminal support:
func main() {
switch l := termcolor.SupportLevel(os.Stderr); l {
case termcolor.Level16M:
// wrap text with 24 bit color https://en.wikipedia.org/wiki/ANSI_escape_code#24-bit
fmt.Fprint(os.Stderr, "\x1b[38;2;25;255;203mSuccess!\n\x1b[0m")
case termcolor.Level256:
// wrap text with 8 bit color https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit
fmt.Fprint(os.Stderr, "\x1b[38;5;118mSuccess!\n\x1b[0m")
case termcolor.LevelBasic:
// wrap text with 3/4 bit color https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit
fmt.Fprint(os.Stderr, "\x1b[92mSuccess!\n\x1b[0m")
default:
// no color, return text as is.
fmt.Fprint(os.Stderr, "Success!\n")
}
}
Alternatively, you can use:
if termcolor.Supports16M(os.Stderr) {}
if termcolor.Supports256(os.Stderr) {}
if termcolor.SupportsBasic(os.Stderr) {}
if termcolor.SupportsNone(os.Stderr) {}
Priorities
The same environment variable and flag priorities as chalk's supports-color module is applied.
It obeys the
--colorand--no-colorCLI flags.For situations where using
--coloris not possible, use the environment variableFORCE_COLOR=1(level 1),FORCE_COLOR=2(level 2), orFORCE_COLOR=3(level 3) to forcefully enable color, orFORCE_COLOR=0to forcefully disable. The use ofFORCE_COLORoverrides all other color support checks.Explicit 256/Truecolor mode can be enabled using the
--color=256and--color=16mflags, respectively.
Credits
License
The MIT License (MIT) - see LICENSE for more details.