feat: first working version
This commit is contained in:
parent
a67e208d6e
commit
1029563cb1
11 changed files with 585 additions and 0 deletions
70
internal/ui/console.go
Normal file
70
internal/ui/console.go
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
package ui
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"syscall"
|
||||
|
||||
"golang.org/x/term"
|
||||
)
|
||||
|
||||
var reader = bufio.NewReader(os.Stdin)
|
||||
|
||||
/**
|
||||
* @brief Считывание логина и пароля с консоли
|
||||
*
|
||||
* Логин вводится обычным текстом, пароль — с маской.
|
||||
*
|
||||
* @return login введённый логин
|
||||
* @return password введённый пароль
|
||||
* @return err ошибка при вводе
|
||||
*/
|
||||
func ReadCredentials() (login string, password string, err error) {
|
||||
// Ввод логина
|
||||
fmt.Print("Логин: ")
|
||||
login, err = reader.ReadString('\n')
|
||||
if err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
login = strings.TrimSpace(login)
|
||||
|
||||
// Ввод пароля с маской
|
||||
fmt.Print("Пароль: ")
|
||||
bytePassword, err := term.ReadPassword(int(syscall.Stdin))
|
||||
fmt.Println()
|
||||
if err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
password = strings.TrimSpace(string(bytePassword))
|
||||
|
||||
return login, password, nil
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Предложить пользователю очистку формы
|
||||
*
|
||||
* Пользователь может ввести "y" или "n".
|
||||
*
|
||||
* @return true если пользователь выбрал сброс
|
||||
*/
|
||||
func AskReset() bool {
|
||||
for {
|
||||
fmt.Print("Очистить форму и попробовать снова? (y/n): ")
|
||||
resp, err := reader.ReadString('\n')
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
resp = strings.ToLower(strings.TrimSpace(resp))
|
||||
|
||||
if resp == "y" || resp == "yes" {
|
||||
return true
|
||||
} else if resp == "n" || resp == "no" {
|
||||
return false
|
||||
} else {
|
||||
fmt.Println("Введите y или n.")
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue