mirror of
https://github.com/neilotoole/sq.git
synced 2025-01-03 14:03:25 +03:00
99454852f0
- Preliminary work on the (currently hidden) `db` cmds. - Improvements to `--src.schema`
54 lines
912 B
Go
54 lines
912 B
Go
//go:build !windows
|
|
|
|
// Package termz contains a handful of terminal utilities.
|
|
package termz
|
|
|
|
import (
|
|
"io"
|
|
"os"
|
|
|
|
"golang.org/x/term"
|
|
)
|
|
|
|
// IsTerminal returns true if w is a terminal.
|
|
func IsTerminal(w io.Writer) bool {
|
|
switch v := w.(type) {
|
|
case *os.File:
|
|
return term.IsTerminal(int(v.Fd()))
|
|
default:
|
|
return false
|
|
}
|
|
}
|
|
|
|
// IsColorTerminal returns true if w is a colorable terminal.
|
|
// It respects [NO_COLOR], [FORCE_COLOR] and TERM=dumb environment variables.
|
|
//
|
|
// [NO_COLOR]: https://no-color.org/
|
|
// [FORCE_COLOR]: https://force-color.org/
|
|
func IsColorTerminal(w io.Writer) bool {
|
|
if os.Getenv("NO_COLOR") != "" {
|
|
return false
|
|
}
|
|
if os.Getenv("FORCE_COLOR") != "" {
|
|
return true
|
|
}
|
|
if os.Getenv("TERM") == "dumb" {
|
|
return false
|
|
}
|
|
|
|
if w == nil {
|
|
return false
|
|
}
|
|
|
|
f, ok := w.(*os.File)
|
|
if !ok {
|
|
return false
|
|
}
|
|
|
|
if !term.IsTerminal(int(f.Fd())) {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|