summaryrefslogtreecommitdiff
path: root/pkg/cli/interface.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/cli/interface.go')
-rw-r--r--pkg/cli/interface.go18
1 files changed, 13 insertions, 5 deletions
diff --git a/pkg/cli/interface.go b/pkg/cli/interface.go
index 3192d32..c188c77 100644
--- a/pkg/cli/interface.go
+++ b/pkg/cli/interface.go
@@ -26,18 +26,26 @@ import (
"os"
"sort"
"strings"
+
+ "golang.org/x/crypto/ssh/terminal"
)
//NewInterface creates an Interface instance.
-func NewInterface(stdin, stdout, stderr *os.File) (*Interface, error) {
- //TODO: check terminal.IsTerminal(int(stdin.Fd())) and choose the TUI instance accordingly
- return &Interface{
+func NewInterface(stdin, stdout, stderr *os.File) *Interface {
+ i := &Interface{
stdin: stdin,
stdout: stdout,
stderr: stderr,
stdinBuf: bufio.NewReader(stdin),
- tui: &terminalTUI{},
- }, nil
+ }
+
+ if terminal.IsTerminal(int(stdin.Fd())) {
+ i.tui = &terminalTUI{i}
+ } else {
+ i.tui = &pipeTUI{i}
+ }
+
+ return i
}
//Interface wraps access to the CLI, including input, output and subprocesses.