Files
steampipe/pkg/utils/user_input.go

38 lines
740 B
Go

package utils
import (
"context"
"fmt"
"strings"
)
// UserConfirmation displays the warning message and asks the user for input
// regarding whether to continue or not
func UserConfirmation(ctx context.Context, warningMsg string) (bool, error) {
fmt.Println(warningMsg)
confirm := make(chan string, 1)
confirmErr := make(chan error, 1)
go func() {
defer func() {
close(confirm)
close(confirmErr)
}()
var userConfirm string
_, err := fmt.Scanf("%s", &userConfirm)
if err != nil {
confirmErr <- err
return
}
confirm <- userConfirm
}()
select {
case err := <-confirmErr:
return false, err
case <-ctx.Done():
return false, ctx.Err()
case c := <-confirm:
return strings.ToUpper(c) == "Y", nil
}
}