You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
| package ncli
 | |
| 
 | |
| import (
 | |
| 	"git.noahlan.cn/noahlan/ntool/internal/common"
 | |
| 	"golang.org/x/term"
 | |
| 	"os"
 | |
| 	"path"
 | |
| )
 | |
| 
 | |
| // Workdir get
 | |
| func Workdir() string {
 | |
| 	return common.Workdir()
 | |
| }
 | |
| 
 | |
| // BinDir get
 | |
| func BinDir() string {
 | |
| 	return path.Dir(os.Args[0])
 | |
| }
 | |
| 
 | |
| // BinFile get
 | |
| func BinFile() string {
 | |
| 	return os.Args[0]
 | |
| }
 | |
| 
 | |
| // BinName get
 | |
| func BinName() string {
 | |
| 	return path.Base(os.Args[0])
 | |
| }
 | |
| 
 | |
| // exec: `stty -a 2>&1`
 | |
| // const (
 | |
| // mac: speed 9600 baud; 97 rows; 362 columns;
 | |
| // macSttyMsgPattern = `(\d+)\s+rows;\s*(\d+)\s+columns;`
 | |
| // linux: speed 38400 baud; rows 97; columns 362; line = 0;
 | |
| // linuxSttyMsgPattern = `rows\s+(\d+);\s*columns\s+(\d+);`
 | |
| // )
 | |
| var terminalWidth, terminalHeight int
 | |
| 
 | |
| // GetTermSize for current console terminal.
 | |
| func GetTermSize(refresh ...bool) (w int, h int) {
 | |
| 	if terminalWidth > 0 && len(refresh) > 0 && !refresh[0] {
 | |
| 		return terminalWidth, terminalHeight
 | |
| 	}
 | |
| 
 | |
| 	var err error
 | |
| 	w, h, err = term.GetSize(syscallStdinFd())
 | |
| 	if err != nil {
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	// cache result
 | |
| 	terminalWidth, terminalHeight = w, h
 | |
| 	return
 | |
| }
 |