49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
// +build !windows
|
|
|
|
// The method in the file has no effect
|
|
// Only for compatibility with non-Windows systems
|
|
|
|
package color
|
|
|
|
import (
|
|
"strings"
|
|
"syscall"
|
|
|
|
"github.com/xo/terminfo"
|
|
)
|
|
|
|
// detect special term color support
|
|
func detectSpecialTermColor(termVal string) (terminfo.ColorLevel, bool) {
|
|
if termVal == "" {
|
|
return terminfo.ColorLevelNone, false
|
|
}
|
|
|
|
debugf("terminfo check fail - fallback detect color by check TERM value")
|
|
|
|
// on TERM=screen:
|
|
// - support 256, not support true-color. test on macOS
|
|
if termVal == "screen" {
|
|
return terminfo.ColorLevelHundreds, false
|
|
}
|
|
|
|
if strings.Contains(termVal, "256color") {
|
|
return terminfo.ColorLevelHundreds, false
|
|
}
|
|
|
|
if strings.Contains(termVal, "xterm") {
|
|
return terminfo.ColorLevelHundreds, false
|
|
// return terminfo.ColorLevelBasic, false
|
|
}
|
|
|
|
// return terminfo.ColorLevelNone, nil
|
|
return terminfo.ColorLevelBasic, false
|
|
}
|
|
|
|
// IsTerminal returns true if the given file descriptor is a terminal.
|
|
//
|
|
// Usage:
|
|
// IsTerminal(os.Stdout.Fd())
|
|
func IsTerminal(fd uintptr) bool {
|
|
return fd == uintptr(syscall.Stdout) || fd == uintptr(syscall.Stdin) || fd == uintptr(syscall.Stderr)
|
|
}
|