mirror of
https://github.com/turbot/steampipe.git
synced 2025-12-19 18:12:43 -05:00
38 lines
740 B
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
|
|
}
|
|
}
|