1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- package pio
- import (
- "io"
- "runtime"
- "github.com/kataras/pio/terminal"
- )
- // outputWriter just caches the "supportColors"
- // in order to reduce syscalls for known printers.
- type outputWriter struct {
- io.Writer
- supportColors bool
- }
- func wrapWriters(output ...io.Writer) []*outputWriter {
- outs := make([]*outputWriter, 0, len(output))
- for _, w := range output {
- outs = append(outs, &outputWriter{
- Writer: w,
- supportColors: SupportColors(w),
- })
- }
- return outs
- }
- // SupportColors reports whether the "w" io.Writer is not a file and it does support colors.
- func SupportColors(w io.Writer) bool {
- if w == nil {
- return false
- }
- if sc, ok := w.(*outputWriter); ok {
- return sc.supportColors
- }
- isTerminal := !IsNop(w) && terminal.IsTerminal(w)
- if isTerminal && runtime.GOOS == "windows" {
- // if on windows then return true only when it does support 256-bit colors,
- // this is why we initially do that terminal check for the "w" writer.
- return terminal.SupportColors
- }
- return isTerminal
- }
|