| package console |
| |
| import ( |
| "errors" |
| "io" |
| "os" |
| ) |
| |
| var ErrNotAConsole = errors.New("provided file is not a console") |
| |
| type Console interface { |
| io.Reader |
| io.Writer |
| io.Closer |
| |
| // Resize resizes the console to the provided window size |
| Resize(WinSize) error |
| // ResizeFrom resizes the calling console to the size of the |
| // provided console |
| ResizeFrom(Console) error |
| // SetRaw sets the console in raw mode |
| SetRaw() error |
| // DisableEcho disables echo on the console |
| DisableEcho() error |
| // Reset restores the console to its orignal state |
| Reset() error |
| // Size returns the window size of the console |
| Size() (WinSize, error) |
| // Fd returns the console's file descriptor |
| Fd() uintptr |
| // Name returns the console's file name |
| Name() string |
| } |
| |
| // WinSize specifies the window size of the console |
| type WinSize struct { |
| // Height of the console |
| Height uint16 |
| // Width of the console |
| Width uint16 |
| x uint16 |
| y uint16 |
| } |
| |
| // Current returns the current processes console |
| func Current() Console { |
| c, err := ConsoleFromFile(os.Stdin) |
| if err != nil { |
| // stdin should always be a console for the design |
| // of this function |
| panic(err) |
| } |
| return c |
| } |
| |
| // ConsoleFromFile returns a console using the provided file |
| func ConsoleFromFile(f *os.File) (Console, error) { |
| if err := checkConsole(f); err != nil { |
| return nil, err |
| } |
| return newMaster(f) |
| } |