Add hints

This commit is contained in:
Ваше Имя 2025-12-20 18:07:13 +05:00
parent 0f25186736
commit de5e4d9efb
4 changed files with 47 additions and 10 deletions

BIN
hello

Binary file not shown.

28
main.go
View File

@ -70,10 +70,12 @@ type MenuItem struct {
Catch []string `yaml:"catch,omitempty"` Catch []string `yaml:"catch,omitempty"`
Vars []string `yaml:"vars,omitempty"` Vars []string `yaml:"vars,omitempty"`
Env string `yaml:"env,omitempty"` Env string `yaml:"env,omitempty"`
Hint string `yaml:"hint,omitempty"` // Добавляем hint в MenuItem
} }
// Menu управляет отображением меню // Menu управляет отображением меню
type Menu struct { type Menu struct {
hint string
items map[int]MenuItem items map[int]MenuItem
variables *Variables variables *Variables
baseDir string baseDir string
@ -82,7 +84,6 @@ type Menu struct {
// NewMenu инициализирует меню из YAML // NewMenu инициализирует меню из YAML
func NewMenu(yamlFile string) *Menu { func NewMenu(yamlFile string) *Menu {
currDir, _ := os.Getwd() currDir, _ := os.Getwd()
// baseDir := filepath.Join(currDir, "menu") // Базовая директория меню
baseDir := currDir baseDir := currDir
yamlPath := resolvePath(baseDir, yamlFile) yamlPath := resolvePath(baseDir, yamlFile)
@ -94,16 +95,18 @@ func NewMenu(yamlFile string) *Menu {
defer file.Close() defer file.Close()
decoder := yaml.NewDecoder(file) decoder := yaml.NewDecoder(file)
var menu struct { var menuData struct {
Hint string `yaml:"hint,omitempty"` // Добавляем поле hint
Items map[int]MenuItem `yaml:"items"` Items map[int]MenuItem `yaml:"items"`
} }
if err := decoder.Decode(&menu); err != nil { if err := decoder.Decode(&menuData); err != nil {
log.Fatalf("Ошибка парсинга YAML: %v", err) log.Fatalf("Ошибка парсинга YAML: %v", err)
} }
return &Menu{ return &Menu{
items: menu.Items, hint: menuData.Hint,
items: menuData.Items,
variables: NewVariables("env.ini"), variables: NewVariables("env.ini"),
baseDir: baseDir, baseDir: baseDir,
} }
@ -127,6 +130,14 @@ func resolvePath(baseDir, yamlFile string) string {
// ShowItems отображает главное меню // ShowItems отображает главное меню
func (m *Menu) ShowItems() { func (m *Menu) ShowItems() {
// Выводим подсказку, если она есть
if m.hint != "" {
fmt.Println(m.hint)
// fmt.Println() // Пустая строка после подсказки
} else {
fmt.Println()
}
fmt.Println("0. Выход") fmt.Println("0. Выход")
// Извлекаем ключи из мапы // Извлекаем ключи из мапы
@ -149,6 +160,7 @@ func (m *Menu) Loop() {
for { for {
m.ShowItems() m.ShowItems()
fmt.Print("\n")
fmt.Print("Выберите действие: ") fmt.Print("Выберите действие: ")
input, _ := reader.ReadString('\n') input, _ := reader.ReadString('\n')
input = strings.TrimSpace(input) input = strings.TrimSpace(input)
@ -180,7 +192,13 @@ func (m *Menu) ChooseItem(itemNum int) {
subMenu := NewMenu(filePath) subMenu := NewMenu(filePath)
subMenu.Loop() subMenu.Loop()
} else if len(item.Items) > 0 { } else if len(item.Items) > 0 {
subMenu := &Menu{items: item.Items, variables: m.variables, baseDir: m.baseDir} // Создаем подменю из вложенных items
subMenu := &Menu{
hint: item.Hint, // Используем hint из MenuItem
items: item.Items,
variables: m.variables,
baseDir: m.baseDir,
}
subMenu.Loop() subMenu.Loop()
} else if len(item.Commands) > 0 { } else if len(item.Commands) > 0 {
vars := m.getVars(item, true) vars := m.getVars(item, true)

View File

@ -1,3 +1,12 @@
hint: |
/======================================\
| ************************************ |
| * МЕНЮ УПРАВЛЕНИЯ СИСТЕМОЙ * |
| * ver. 1.0.0 (2024) * |
| ************************************ |
\======================================/
items: items:
1: 1:
title: '1. Build' title: '1. Build'
@ -38,9 +47,10 @@ items:
title: '5. Stop' title: '5. Stop'
env: 'dev' env: 'dev'
commands: commands:
- 'docker-compose --project-name %(appName)s --file conf/docker/docker-compose_dev.yml stop' - 'docker stop $(docker ps -q)'
- 'sleep 3' # - 'docker-compose --project-name %(appName)s --file conf/docker/docker-compose_dev.yml stop'
- 'docker network rm dockernet' # - 'sleep 3'
# - 'docker network rm dockernet'
vars: vars:
- appName - appName
6: 6:

View File

@ -1,3 +1,12 @@
hint: |
/======================================\
| ************************************ |
| * МЕНЮ УПРАВЛЕНИЯ СИСТЕМОЙ * |
| * ver. 1.0.0 (2024) * |
| ************************************ |
\======================================/
items: items:
1: 1:
title: '1. Develop' title: '1. Develop'