cmd/streamdata: y/n prompt helper
This returns a boolean value with fallback. Signed-off-by: Yonah <contrib@gensokyo.uk>
This commit is contained in:
@@ -126,6 +126,40 @@ invalid:
|
|||||||
return v, true
|
return v, true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// promptBool prompts the user for a y/n response until a valid response or a
|
||||||
|
// single newline character is read.
|
||||||
|
func promptBool(
|
||||||
|
br *bufio.Reader,
|
||||||
|
p string,
|
||||||
|
fallback bool,
|
||||||
|
) (bool, bool) {
|
||||||
|
if fallback {
|
||||||
|
p += "[Y/n] "
|
||||||
|
} else {
|
||||||
|
p += "[y/N] "
|
||||||
|
}
|
||||||
|
|
||||||
|
invalid:
|
||||||
|
s, ok := prompt(br, p)
|
||||||
|
if !ok {
|
||||||
|
return false, false
|
||||||
|
}
|
||||||
|
|
||||||
|
switch strings.ToLower(strings.TrimSpace(s)) {
|
||||||
|
default:
|
||||||
|
goto invalid
|
||||||
|
|
||||||
|
case "":
|
||||||
|
return fallback, true
|
||||||
|
|
||||||
|
case "y":
|
||||||
|
return true, true
|
||||||
|
|
||||||
|
case "n":
|
||||||
|
return false, true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// require panics with an error if ok is false, and returns v otherwise.
|
// require panics with an error if ok is false, and returns v otherwise.
|
||||||
func require[T any](v T, ok bool) T {
|
func require[T any](v T, ok bool) T {
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|||||||
Reference in New Issue
Block a user