133 lines
3.5 KiB
Markdown
133 lines
3.5 KiB
Markdown
# Hello
|
||
|
||
Утилита командной строки для работы через интерактивное меню.
|
||
|
||
## Установка
|
||
|
||
### Вариант 1: Сборка из исходников
|
||
|
||
```bash
|
||
# Клонируем или копируем исходники
|
||
cd /путь/к/проекту
|
||
|
||
# Собираем бинарник
|
||
go build -o hello main.go
|
||
|
||
# Проверяем
|
||
./hello --help
|
||
```
|
||
|
||
### Вариант 2: Ручное копирование
|
||
|
||
1. **Скомпилируйте или возьмите готовый бинарник** `hello`
|
||
|
||
2. **Скопируйте его в один из путей:**
|
||
|
||
```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
|
||
```
|
||
|
||
## Использование
|
||
|
||
### Интерактивный режим
|
||
|
||
```bash
|
||
# Если бинарник в PATH
|
||
hello
|
||
|
||
# Если бинарник в текущей папке
|
||
./hello
|
||
|
||
# Если бинарник в домашней директории
|
||
~/hello
|
||
```
|
||
|
||
### Прямой запуск команд
|
||
|
||
```bash
|
||
# Выполнить пункт 1 из меню
|
||
hello --exec "1"
|
||
|
||
# Выполнить цепочку 1 → 2 → 3
|
||
hello --exec "1-2-3"
|
||
```
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
.
|
||
├── hello # бинарник (после сборки)
|
||
├── main.go # исходный код
|
||
├── menu/ # папка с меню (опционально)
|
||
│ └── menu.yml # главное меню
|
||
├── env.ini # переменные (опционально)
|
||
└── README.md
|
||
```
|
||
|
||
## Быстрый старт
|
||
|
||
1. **Соберите бинарник**
|
||
2. **Создайте базовый `menu.yml`**:
|
||
|
||
```yaml
|
||
items:
|
||
1:
|
||
title: "1. Список файлов"
|
||
commands:
|
||
- "ls -la"
|
||
2:
|
||
title: "2. Проверка диска"
|
||
commands:
|
||
- "df -h"
|
||
3:
|
||
title: "3. Git статус"
|
||
commands:
|
||
- "git status"
|
||
catch:
|
||
- "echo 'Не git репозиторий'"
|
||
```
|
||
|
||
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, или используйте абсолютный путь |