# 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, или используйте абсолютный путь