github.com/cli/cli@v1.14.1-0.20210902173923-1af6a669e342/utils/terminal.go (about) 1 package utils 2 3 import ( 4 "fmt" 5 "os" 6 7 "github.com/mattn/go-isatty" 8 "golang.org/x/term" 9 ) 10 11 var IsTerminal = func(f *os.File) bool { 12 return isatty.IsTerminal(f.Fd()) || IsCygwinTerminal(f) 13 } 14 15 func IsCygwinTerminal(f *os.File) bool { 16 return isatty.IsCygwinTerminal(f.Fd()) 17 } 18 19 var TerminalSize = func(w interface{}) (int, int, error) { 20 if f, isFile := w.(*os.File); isFile { 21 return term.GetSize(int(f.Fd())) 22 } 23 24 return 0, 0, fmt.Errorf("%v is not a file", w) 25 }