123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- 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)
- }
|