From 3d40ede06d32b32d4067c0990f9f29f44869ab1d Mon Sep 17 00:00:00 2001 From: Archie Fox Date: Fri, 14 Mar 2025 18:33:16 +0300 Subject: [PATCH] Fix main.go menu --- go-demo-4/account/account.go | 9 ------- go-demo-4/files/files.go | 5 ++-- go-demo-4/main.go | 51 +++++++++++++++++++++--------------- 3 files changed, 33 insertions(+), 32 deletions(-) diff --git a/go-demo-4/account/account.go b/go-demo-4/account/account.go index e183f95..dbcecaa 100644 --- a/go-demo-4/account/account.go +++ b/go-demo-4/account/account.go @@ -2,7 +2,6 @@ package account import ( "errors" - "fmt" "github.com/fatih/color" "math/rand/v2" "net/url" @@ -55,11 +54,3 @@ func NewAccount(login, password, urlString string) (*Account, error) { } return newAcc, nil } - -// функция введения данных -func PromptData(prompt string) string { - fmt.Print(prompt) - var res string - fmt.Scanln(&res) - return res -} diff --git a/go-demo-4/files/files.go b/go-demo-4/files/files.go index 75e6832..249123d 100644 --- a/go-demo-4/files/files.go +++ b/go-demo-4/files/files.go @@ -1,9 +1,10 @@ package files import ( - "fmt" "os" "password/output" + + "github.com/fatih/color" ) type JsonDb struct { @@ -36,5 +37,5 @@ func (db *JsonDb) Write(content []byte) { output.PrintError(err) return } - fmt.Println("Файл успешно записан") + color.Green("Файл успешно записан") } diff --git a/go-demo-4/main.go b/go-demo-4/main.go index 13b8aea..fe05c5d 100644 --- a/go-demo-4/main.go +++ b/go-demo-4/main.go @@ -13,17 +13,23 @@ func main() { // fmt.Println(output.Sum(100, 42)) // fmt.Println(output.Sum(10.7, 3.14)) // fmt.Println(output.Sum("Hello ", "world!")) - fmt.Println("__Менеджер паролей__") + color.Blue("__Менеджер паролей__") vault := account.NewVault(files.NewJsonDb("data.json")) Menu: for { - variant := getMenu() + variant := PromptData([]string{ + "1. Создать аккаунт", + "2. Найти аккаунт", + "3. Удалить аккаунт", + "4. Выход", + "Выберите вариант", + }) switch variant { - case 1: + case "1": createAccount(vault) - case 2: + case "2": findAccount(vault) - case 3: + case "3": deleteAccount(vault) default: break Menu @@ -31,19 +37,8 @@ Menu: } } -func getMenu() int { - var variant int - fmt.Println("Выберите вариант:") - fmt.Println("1. Создать аккаунт") - fmt.Println("2. Найти аккаунт") - fmt.Println("3. Удалить аккаунт") - fmt.Println("4. Выход") - fmt.Scan(&variant) - return variant -} - func findAccount(vault *account.VaultWithDb) { - url := account.PromptData("Введите URL для поиска: ") + url := PromptData([]string{"Введите URL для поиска: "}) accounts := vault.FindAccountsByUrl(url) if len(accounts) == 0 { color.Red("Аккаунт не найден!") @@ -54,7 +49,7 @@ func findAccount(vault *account.VaultWithDb) { } func deleteAccount(vault *account.VaultWithDb) { - url := account.PromptData("Введите URL для поиска: ") + url := PromptData([]string{"Введите URL для поиска: "}) isDeleted := vault.DeleteAccountByUrl(url) if isDeleted { color.Green("Удалено") @@ -64,9 +59,9 @@ func deleteAccount(vault *account.VaultWithDb) { } func createAccount(vault *account.VaultWithDb) { - login := account.PromptData("Введите логин: ") - password := account.PromptData("Введите пароль: ") - url := account.PromptData("Введите URL: ") + login := PromptData([]string{"Введите логин: "}) + password := PromptData([]string{"Введите пароль: "}) + url := PromptData([]string{"Введите URL: "}) myAccount, err := account.NewAccount(login, password, url) if err != nil { @@ -75,3 +70,17 @@ func createAccount(vault *account.VaultWithDb) { } vault.AddAccount(*myAccount) } + +// функция введения данных +func PromptData[T any](prompt []T) string { + for i, line := range prompt { + if i == len(prompt)-1 { + fmt.Printf("%v: ", line) + } else { + fmt.Println(line) + } + } + var res string + fmt.Scanln(&res) + return res +}