docs: update readme

This commit is contained in:
2026-09-07 17:22:34 +05:00
parent d194890315
commit 1d259feae6
+45 -17
View File
@@ -14,40 +14,64 @@
cargo install --path .
```
Требуется Rust 1.88+. Кроссплатформенно: Windows (MSVC), Linux, macOS.
Бинарник называется **`xd`**. Требуется Rust 1.88+. Кроссплатформенно:
Windows (MSVC), Linux, macOS.
## Быстрый старт
## Команды
```sh
xboct-deploy --list # показать проекты из конфига
xboct-deploy --list-servers # показать серверы из конфига
xboct-deploy --pick # интерактивно выбрать проект (нечёткий поиск)
xboct-deploy --dry-run demo # напечатать план деплоя без выполнения
xboct-deploy demo # задеплоить проект demo
xboct-deploy --this # задеплоить проект текущей папки (глобальный конфиг)
xd list # показать проекты из конфига
xd list-servers # показать серверы из конфига
xd pick # интерактивно выбрать проект (нечёткий поиск)
xd deploy my-node-app # задеплоить проект my-node-app
xd deploy # задеплоить проект текущей папки (workdir == cwd)
xd --dry-run deploy my-node-app # напечатать план деплоя без выполнения
xd edit-config # открыть глобальный конфиг в $EDITOR
xd # статус: какой проект соответствует текущей папке
# (вне проекта — список проектов из конфига)
```
Вывод:
Глобальные флаги:
```txt
deploying 'demo'
-c, --config <PATH> явный путь к конфигу (работает и внутри подкоманд)
-g, --global использовать только глобальный конфиг (конфликтует с -c)
--dry-run печать плана без выполнения; НЕ глобальный — ставится
до подкоманды: `xd --dry-run deploy name`
```
`xd deploy` без имени ищет проект, чей `workdir` совпадает с текущей папкой,
и падает с ошибкой, если такого нет. `xd pick` требует реальный терминал —
в скриптах используйте `xd list`.
Вывод деплоя:
```txt
[Git] on branch 'main' ✓
deploying 'my-node-app'
[Local] running: npm run build... Success! (1.2s)
[SFTP] transferring dist to /var/www/pages... Done! (14 file(s), 231.5 KiB) (829ms)
connecting...
[SFTP] transferring dist to /var/www/pages/my-node-app... Done! (14 file(s), 231.5 KiB) (829ms)
[Remote] running: pm2 restart pages... Success! (102ms)
[LocalAfter] running: curl -s -X POST https://example.com/hook... Success! (45ms)
Deploy successful! (total 2.3s)
```
Строка `[Git]` появляется только при заданном `branch`, `connecting...` — перед
первым SSH-шагом (sync/remote), `[LocalAfter]` — шаги `local_after`.
## Конфигурация
Файл ищется по цепочке:
1. `--config PATH`, если указан явно;
1. `-c/--config PATH`, если указан явно (конфликтует с `-g`);
2. `./deploy.toml` в текущей папке — удобно держать рядом с проектом и в тестах;
3. глобальный `~/.config/xboct-deploy/deploy.toml` — запуск «из любой папки».
`--this` деплоит проект, чей `workdir` совпадает с текущей папкой; конфиг
ищется по обычной цепочке, так что временный локальный `./deploy.toml`
переопределяет глобальный — создали файл, задеплоились, удалили.
Флаг `-g/--global` исключает шаг 2: используется только глобальный конфиг.
Деплой проекта текущей папки (`xd deploy` без имени) ищет конфиг по этой же
цепочке, так что временный локальный `./deploy.toml` переопределяет глобальный —
создали файл, задеплоились, удалили.
Схема — **один проект = один блок**, все параметры точечными ключами:
@@ -161,6 +185,10 @@ export DB_URL=postgres://localhost/app
## Разработка
```sh
just test # fmt + clippy -D warnings + cargo test
just run # деплой из test/deploy.toml (в git не входит)
just test # fmt + clippy -D warnings + cargo test
just build # cargo build
just install # cargo install --path . (бинарник xd)
just run # деплой проекта github-tracker из test/deploy.toml (в git не входит)
```
Схема деплоя и планы — в `docs/`, текущие задачи — в `backlog.md`.