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  }