54 lines
1.1 KiB
Go
54 lines
1.1 KiB
Go
package utils
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"github.com/fatih/color"
|
|
"golang.org/x/crypto/ssh/terminal"
|
|
"os"
|
|
"strings"
|
|
"syscall"
|
|
)
|
|
|
|
func StdinQueryPassword(question string) (string, error) {
|
|
|
|
fmt.Println(color.BlueString(question))
|
|
bytePassword, err := terminal.ReadPassword(int(syscall.Stdin))
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
text := strings.TrimSpace(string(bytePassword))
|
|
return text, nil
|
|
}
|
|
|
|
func StdinQuery(question string) string {
|
|
|
|
fmt.Println(color.BlueString(question))
|
|
reader := bufio.NewReader(os.Stdin)
|
|
text, _ := reader.ReadString('\n')
|
|
text = strings.TrimSpace(text)
|
|
return text
|
|
}
|
|
|
|
func StdinQueryBoolean(question string) bool {
|
|
|
|
text := StdinQuery(question)
|
|
text = strings.ToLower(text)
|
|
|
|
if text == "true" || text == "yes" || text == "y" {
|
|
return true
|
|
} else if text == "false" || text == "no" || text == "n" {
|
|
return false
|
|
} else {
|
|
color.Yellow("WARNING: invalid response only true/yes/y/false/no/n allowed not `%v`.\nAssuming `no`", text)
|
|
return false
|
|
}
|
|
}
|
|
|
|
func StdinQueryInt(question string) (int, error) {
|
|
|
|
text := StdinQuery(question)
|
|
return StringToInt(text)
|
|
}
|