# Hello

Утилита командной строки для работы через интерактивное меню.

## Установка

### Вариант 1: Сборка из исходников

```bash
# Клонируем или копируем исходники
cd /путь/к/проекту

# Собираем бинарник
go build -o hello main.go

# Проверяем
./hello --help
```

### Вариант 2: Ручное копирование

1. **Скомпилируйте или возьмите готовый бинарник** `hello`

2. **Скопируйте его в один из путей:**

```bash
# Вариант A: В домашнюю папку (рекомендуется)
cp hello ~/hello

# Вариант B: В текущую рабочую папку
cp hello /ваша/рабочая/папка/

# Вариант C: В системный PATH (если нужно глобально)
sudo cp hello /usr/local/bin/
```

3. **Создайте структуру конфигов** (если нужно):

```bash
mkdir -p menu
# положите туда ваши menu.yml и env.ini
```

## Использование

### Интерактивный режим

```bash
# Запуск с конфигом по умолчанию (ищет menu/menu.yml)
./hello

# Запуск с указанием пути к конфигу через флаг -c
./hello -c /путь/к/моему_меню.yml
./hello -c ./another_menu.yml
```

### Прямой запуск команд

```bash
# Выполнить пункт 1 (используя конфиг по умолчанию)
./hello --exec "1"

# Выполнить цепочку 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.yml         # главное меню
├── env.ini              # переменные (опционально)
└── README.md
```

## Быстрый старт

1. **Соберите бинарник**
2. **Создайте базовый `menu/menu.yml`**:

```yaml
items:
  1:
    title: "1. Список файлов"
    commands:
      - "ls -la"
  2:
    title: "2. Проверка диска"
    commands:
      - "df -h"
```

3. **Запустите**:
```bash
./hello
```

## Отладка

```bash
# Запуск с Delve
dlv debug --headless --listen=:40000 --api-version=2

# Компиляция с отладочной информацией
go build -gcflags="all=-N -l" -o hello main.go
```

## Примечания

- Программа ищет `menu.yml` в папке `menu/` относительно места запуска
- Если `menu.yml` не найден, нужно создать его вручную
- Файл `env.ini` нужен только если в меню используются переменные `%(имя_переменной)s`
- Для работы в любой папке копируйте бинарник в место, указанное в PATH, или используйте абсолютный путь