Documentation
¶
Overview ¶
Package supportscolor detects whether a terminal supports color, and enables ANSI color support in recent Windows 10 builds.
This is a port of the Node.js package supports-color (https://github.com/chalk/supports-color) by Sindre Sorhus and Josh Junon.
Returns a `supportscolor.Support` with a `Stdout()` and `Stderr()` function for testing either stream. Note that on recent Windows 10 machines, these functions will also set the `ENABLE_VIRTUAL_TERMINAL_PROCESSING` console mode if required, which will enable support for normal ANSI escape codes on stdout and stderr.
The `Stdout()`/`Stderr()` objects specify a level of support for color through a `.Level` property and a corresponding flag:
- `.Level = None` and `.SupportsColor = false`: No color support
- `.Level = Basic` and `.SupportsColor = true`: Basic color support (16 colors)
- `.Level = Ansi256` and `.Has256 = true`: 256 color support
- `.Level = Ansi16m` and `.Has16m = true`: True color support (16 million colors)
Additionally, `supportscolor` exposes the `.SupportsColor()` function that takes an arbitrary file descriptor (e.g. `os.Stdout.Fd()`) and options, and will (re-)evaluate color support for an arbitrary stream.
For example, `supportscolor.Stdout()` is the equivalent of `supportscolor.SupportsColor(os.Stdout.Fd())`.
Available options are:
`supportscolor.IsTTYOption(isTTY bool)` - Force whether the given file should be considered a TTY or not. If this not specified, TTY status will be detected automatically via `term.IsTerminal()`.
`supportscolor.SniffFlagsOption(sniffFlags bool)` - By default it is `true`, which instructs `SupportsColor()` to sniff `os.Args` for the multitude of `--color` flags (see Info section in README.md). If `false`, then `os.Args` is not considered when determining color support.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ColorLevel ¶
type ColorLevel int
ColorLevel represents the ANSI color level supported by the terminal.
const ( // None represents a terminal that does not support color at all. None ColorLevel = 0 // Basic represents a terminal with basic 16 color support. Basic ColorLevel = 1 // Ansi256 represents a terminal with 256 color support. Ansi256 ColorLevel = 2 // Ansi16m represents a terminal with full true color support. Ansi16m ColorLevel = 3 )
func (ColorLevel) String ¶
func (i ColorLevel) String() string
type Option ¶
type Option func(*configuration)
Option is the type for an option which can be passed to SupportsColor().
func IsTTYOption ¶
IsTTYOption is an option which can be passed to `SupportsColor` to force whether the given file should be considered a TTY or not. If this not specified, TTY status will be detected automatically via `term.IsTerminal()`.
func SniffFlagsOption ¶
SniffFlagsOption can be passed to SupportsColor to enable or disable checking command line flags to force supporting color. If set true (the default), then the following flags will disable color support:
--no-color --no-colors --color=false --color=never
And the following will force color support
--colors --color=true --color=always --color=256 // Ansi 256 color mode --color=16m // 16.7 million color support --color=full // 16.7 million color support --color=truecolor // 16.7 million color support
type Support ¶
type Support struct { Level ColorLevel SupportsColor bool Has256 bool Has16m bool }
Support represents the color support available.
Level will be the supported ColorLevel. SupportsColor will be true if the terminal supports basic 16 color ANSI color escape codes. Has256 will be true if the terminal supports ANSI 256 color, and Has16m will be true if the terminal supports true color.
func SupportsColor ¶
SupportsColor returns color support information for the given file handle.
Example ¶
if supportscolor.Stdout().SupportsColor { fmt.Println("\u001b[31mThis is Red!\u001b[39m") } else { fmt.Println("This is not red.") }
Output: This is not red.