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:
2026-03-19 17:37:29 +09:00
parent ff1a4a4387
commit ccc496f55f

View File

@@ -126,6 +126,40 @@ invalid:
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.
func require[T any](v T, ok bool) T {
if !ok {