Skip to content

Commit

Permalink
fixed terminal support when RawMode is not supported
Browse files Browse the repository at this point in the history
  • Loading branch information
roblaszczak committed Jan 31, 2022
1 parent f09f062 commit e638163
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 5 deletions.
15 changes: 11 additions & 4 deletions internal/confirm.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package internal

import (
"bufio"
"fmt"
"io"
"os"
Expand Down Expand Up @@ -52,13 +53,19 @@ func FConfirmPromptDefaultYes(action string, stdin io.Reader, stdout io.Writer)
_, _ = fmt.Fprintln(stdout)
}()

_, _ = fmt.Fprintf(stdout, "\nPress ENTER to %s or q to quit ", action)
var msgFormat string

in, clean, err := NewRawTerminalReader(stdin)
defer clean()
if err != nil {
logrus.WithError(err).Fatal("Can't read char from terminal")
logrus.WithError(err).Warn("Can't read char from terminal")
msgFormat = "\nPress ENTER to %s or q and ENTER to quit "
in = bufio.NewReader(stdin)
} else {
msgFormat = "\nPress ENTER to %s or q to quit "
}
defer clean()

_, _ = fmt.Fprintf(stdout, msgFormat, action)

for {
char, _, err := in.ReadRune()
Expand All @@ -71,7 +78,7 @@ func FConfirmPromptDefaultYes(action string, stdin io.Reader, stdout io.Writer)

if input == "n" || input == "no" || input == "q" || input == endOfTextChar {
return false
} else if input == "\r" || input == "\n" {
} else if input == "\r" || input == "\n" || input == "" {
return true
} else {
continue
Expand Down
2 changes: 1 addition & 1 deletion internal/terminal.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ func NewRawTerminalReader(stdin io.Reader) (*bufio.Reader, func(), error) {

state, err := terminal.MakeRaw(stdinFileDescriptor)
if err != nil {
return nil, nil, errors.Wrap(err, "can't set stdin to raw")
return nil, func() {}, errors.Wrap(err, "can't set stdin to raw")
}

return bufio.NewReader(stdin), func() {
Expand Down

0 comments on commit e638163

Please sign in to comment.