Fix main.go menu
This commit is contained in:
@@ -2,7 +2,6 @@ package account
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
"math/rand/v2"
|
"math/rand/v2"
|
||||||
"net/url"
|
"net/url"
|
||||||
@@ -55,11 +54,3 @@ func NewAccount(login, password, urlString string) (*Account, error) {
|
|||||||
}
|
}
|
||||||
return newAcc, nil
|
return newAcc, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// функция введения данных
|
|
||||||
func PromptData(prompt string) string {
|
|
||||||
fmt.Print(prompt)
|
|
||||||
var res string
|
|
||||||
fmt.Scanln(&res)
|
|
||||||
return res
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
package files
|
package files
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"os"
|
"os"
|
||||||
"password/output"
|
"password/output"
|
||||||
|
|
||||||
|
"github.com/fatih/color"
|
||||||
)
|
)
|
||||||
|
|
||||||
type JsonDb struct {
|
type JsonDb struct {
|
||||||
@@ -36,5 +37,5 @@ func (db *JsonDb) Write(content []byte) {
|
|||||||
output.PrintError(err)
|
output.PrintError(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
fmt.Println("Файл успешно записан")
|
color.Green("Файл успешно записан")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,17 +13,23 @@ func main() {
|
|||||||
// fmt.Println(output.Sum(100, 42))
|
// fmt.Println(output.Sum(100, 42))
|
||||||
// fmt.Println(output.Sum(10.7, 3.14))
|
// fmt.Println(output.Sum(10.7, 3.14))
|
||||||
// fmt.Println(output.Sum("Hello ", "world!"))
|
// fmt.Println(output.Sum("Hello ", "world!"))
|
||||||
fmt.Println("__Менеджер паролей__")
|
color.Blue("__Менеджер паролей__")
|
||||||
vault := account.NewVault(files.NewJsonDb("data.json"))
|
vault := account.NewVault(files.NewJsonDb("data.json"))
|
||||||
Menu:
|
Menu:
|
||||||
for {
|
for {
|
||||||
variant := getMenu()
|
variant := PromptData([]string{
|
||||||
|
"1. Создать аккаунт",
|
||||||
|
"2. Найти аккаунт",
|
||||||
|
"3. Удалить аккаунт",
|
||||||
|
"4. Выход",
|
||||||
|
"Выберите вариант",
|
||||||
|
})
|
||||||
switch variant {
|
switch variant {
|
||||||
case 1:
|
case "1":
|
||||||
createAccount(vault)
|
createAccount(vault)
|
||||||
case 2:
|
case "2":
|
||||||
findAccount(vault)
|
findAccount(vault)
|
||||||
case 3:
|
case "3":
|
||||||
deleteAccount(vault)
|
deleteAccount(vault)
|
||||||
default:
|
default:
|
||||||
break Menu
|
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) {
|
func findAccount(vault *account.VaultWithDb) {
|
||||||
url := account.PromptData("Введите URL для поиска: ")
|
url := PromptData([]string{"Введите URL для поиска: "})
|
||||||
accounts := vault.FindAccountsByUrl(url)
|
accounts := vault.FindAccountsByUrl(url)
|
||||||
if len(accounts) == 0 {
|
if len(accounts) == 0 {
|
||||||
color.Red("Аккаунт не найден!")
|
color.Red("Аккаунт не найден!")
|
||||||
@@ -54,7 +49,7 @@ func findAccount(vault *account.VaultWithDb) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func deleteAccount(vault *account.VaultWithDb) {
|
func deleteAccount(vault *account.VaultWithDb) {
|
||||||
url := account.PromptData("Введите URL для поиска: ")
|
url := PromptData([]string{"Введите URL для поиска: "})
|
||||||
isDeleted := vault.DeleteAccountByUrl(url)
|
isDeleted := vault.DeleteAccountByUrl(url)
|
||||||
if isDeleted {
|
if isDeleted {
|
||||||
color.Green("Удалено")
|
color.Green("Удалено")
|
||||||
@@ -64,9 +59,9 @@ func deleteAccount(vault *account.VaultWithDb) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func createAccount(vault *account.VaultWithDb) {
|
func createAccount(vault *account.VaultWithDb) {
|
||||||
login := account.PromptData("Введите логин: ")
|
login := PromptData([]string{"Введите логин: "})
|
||||||
password := account.PromptData("Введите пароль: ")
|
password := PromptData([]string{"Введите пароль: "})
|
||||||
url := account.PromptData("Введите URL: ")
|
url := PromptData([]string{"Введите URL: "})
|
||||||
|
|
||||||
myAccount, err := account.NewAccount(login, password, url)
|
myAccount, err := account.NewAccount(login, password, url)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -75,3 +70,17 @@ func createAccount(vault *account.VaultWithDb) {
|
|||||||
}
|
}
|
||||||
vault.AddAccount(*myAccount)
|
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
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user