This commit is contained in:
parent
cf969a764d
commit
02c103e196
44
Readme.md
44
Readme.md
|
|
@ -26,26 +26,17 @@ go build -o hello main.go
|
|||
```bash
|
||||
# Вариант A: В домашнюю папку (рекомендуется)
|
||||
cp hello ~/hello
|
||||
# Использовать: ~/hello
|
||||
|
||||
# Вариант B: В текущую рабочую папку
|
||||
cp hello /ваша/рабочая/папка/
|
||||
# Использовать: ./hello
|
||||
|
||||
# Вариант C: В системный PATH (если нужно глобально)
|
||||
sudo cp hello /usr/local/bin/
|
||||
# Использовать: hello
|
||||
```
|
||||
|
||||
3. **Создайте структуру конфигов** (если нужно):
|
||||
|
||||
```bash
|
||||
# В домашней директории
|
||||
mkdir -p ~/.hello/menu
|
||||
cp menu.yml ~/.hello/menu/
|
||||
cp env.ini ~/.hello/
|
||||
|
||||
# Или в рабочей директории
|
||||
mkdir -p menu
|
||||
# положите туда ваши menu.yml и env.ini
|
||||
```
|
||||
|
|
@ -55,33 +46,38 @@ mkdir -p menu
|
|||
### Интерактивный режим
|
||||
|
||||
```bash
|
||||
# Если бинарник в PATH
|
||||
hello
|
||||
|
||||
# Если бинарник в текущей папке
|
||||
# Запуск с конфигом по умолчанию (ищет menu/menu.yml)
|
||||
./hello
|
||||
|
||||
# Если бинарник в домашней директории
|
||||
~/hello
|
||||
# Запуск с указанием пути к конфигу через флаг -c
|
||||
./hello -c /путь/к/моему_меню.yml
|
||||
./hello -c ./another_menu.yml
|
||||
```
|
||||
|
||||
### Прямой запуск команд
|
||||
|
||||
```bash
|
||||
# Выполнить пункт 1 из меню
|
||||
hello --exec "1"
|
||||
# Выполнить пункт 1 (используя конфиг по умолчанию)
|
||||
./hello --exec "1"
|
||||
|
||||
# Выполнить цепочку 1 → 2 → 3
|
||||
hello --exec "1-2-3"
|
||||
# Выполнить цепочку 1 → 2 → 3 с указанием конкретного конфига
|
||||
./hello -c ./deploy_menu.yml --exec "1-2-3"
|
||||
```
|
||||
|
||||
## Флаги командной строки
|
||||
|
||||
| Флаг | По умолчанию | Описание |
|
||||
| :--- | :--- | :--- |
|
||||
| `-c` | `menu/menu.yml` | **Путь к файлу конфигурации меню.** Позволяет указать произвольный путь к `.yml` файлу. Если не указан, ищет файл в папке `menu`. |
|
||||
| `--exec` | `""` | **Режим прямого выполнения.** Позволяет выполнить пункты меню без входа в интерактивный режим. Аргумент — строка с номерами пунктов, разделенными дефисом (например, `"1-2-3"`). |
|
||||
|
||||
## Структура проекта
|
||||
|
||||
```
|
||||
.
|
||||
├── hello # бинарник (после сборки)
|
||||
├── main.go # исходный код
|
||||
├── menu/ # папка с меню (опционально)
|
||||
├── menu/ # папка с меню (стандартный путь)
|
||||
│ └── menu.yml # главное меню
|
||||
├── env.ini # переменные (опционально)
|
||||
└── README.md
|
||||
|
|
@ -90,7 +86,7 @@ hello --exec "1-2-3"
|
|||
## Быстрый старт
|
||||
|
||||
1. **Соберите бинарник**
|
||||
2. **Создайте базовый `menu.yml`**:
|
||||
2. **Создайте базовый `menu/menu.yml`**:
|
||||
|
||||
```yaml
|
||||
items:
|
||||
|
|
@ -102,12 +98,6 @@ items:
|
|||
title: "2. Проверка диска"
|
||||
commands:
|
||||
- "df -h"
|
||||
3:
|
||||
title: "3. Git статус"
|
||||
commands:
|
||||
- "git status"
|
||||
catch:
|
||||
- "echo 'Не git репозиторий'"
|
||||
```
|
||||
|
||||
3. **Запустите**:
|
||||
|
|
|
|||
10
main.go
10
main.go
|
|
@ -339,13 +339,15 @@ func (m *Menu) catch(item MenuItem, vars map[string]string) {
|
|||
}
|
||||
|
||||
func main() {
|
||||
// Инициализация главного меню
|
||||
menu := NewMenu("menu.yml") // Файл главного меню (menu/menu.yml)
|
||||
|
||||
// Создаем флаг -e/--exec с необязательным аргументом
|
||||
// Инициализация флагов
|
||||
configFile := flag.String("c", "menu.yml", "Путь к файлу конфигурации меню")
|
||||
execFlag := flag.String("exec", "", "Execution parameter")
|
||||
flag.Parse() // Парсим аргументы
|
||||
|
||||
// Инициализация главного меню с использованием флага -c
|
||||
// По умолчанию "menu.yml", что с учетом resolvePath превратится в "menu/menu.yml"
|
||||
menu := NewMenu(*configFile)
|
||||
|
||||
if *execFlag != "" { // Проверяем, задан ли флаг --exec
|
||||
items := strings.Split(*execFlag, "-") // Разделяем строку по "-"
|
||||
for _, item := range items { // Итерируемся по элементам
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
hint: |
|
||||
|
||||
/======================================\
|
||||
| ************************************ |
|
||||
| * МЕНЮ УПРАВЛЕНИЯ СИСТЕМОЙ 2 * |
|
||||
| * ver. 1.0.0 (2024) * |
|
||||
| ************************************ |
|
||||
\======================================/
|
||||
|
||||
items:
|
||||
1:
|
||||
title: '1. Develop'
|
||||
file: '/develop/menu.yml'
|
||||
2:
|
||||
title: '2. Test'
|
||||
file: '/test/menu.yml'
|
||||
3:
|
||||
title: '3. Production'
|
||||
file: '/prod/menu.yml'
|
||||
Loading…
Reference in New Issue