Compare commits

...
1 Commits
Author SHA1 Message Date
Ku6epXBOCTuK 1d259feae6 docs: update readme 2026-09-07 17:22:34 +05:00
+45 -17
View File
@@ -14,40 +14,64 @@
cargo install --path . cargo install --path .
``` ```
Требуется Rust 1.88+. Кроссплатформенно: Windows (MSVC), Linux, macOS. Бинарник называется **`xd`**. Требуется Rust 1.88+. Кроссплатформенно:
Windows (MSVC), Linux, macOS.
## Быстрый старт ## Команды
```sh ```sh
xboct-deploy --list # показать проекты из конфига xd list # показать проекты из конфига
xboct-deploy --list-servers # показать серверы из конфига xd list-servers # показать серверы из конфига
xboct-deploy --pick # интерактивно выбрать проект (нечёткий поиск) xd pick # интерактивно выбрать проект (нечёткий поиск)
xboct-deploy --dry-run demo # напечатать план деплоя без выполнения xd deploy my-node-app # задеплоить проект my-node-app
xboct-deploy demo # задеплоить проект demo xd deploy # задеплоить проект текущей папки (workdir == cwd)
xboct-deploy --this # задеплоить проект текущей папки (глобальный конфиг) xd --dry-run deploy my-node-app # напечатать план деплоя без выполнения
xd edit-config # открыть глобальный конфиг в $EDITOR
xd # статус: какой проект соответствует текущей папке
# (вне проекта — список проектов из конфига)
``` ```
Вывод: Глобальные флаги:
```txt ```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) [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) [Remote] running: pm2 restart pages... Success! (102ms)
[LocalAfter] running: curl -s -X POST https://example.com/hook... Success! (45ms)
Deploy successful! (total 2.3s) 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` в текущей папке — удобно держать рядом с проектом и в тестах; 2. `./deploy.toml` в текущей папке — удобно держать рядом с проектом и в тестах;
3. глобальный `~/.config/xboct-deploy/deploy.toml` — запуск «из любой папки». 3. глобальный `~/.config/xboct-deploy/deploy.toml` — запуск «из любой папки».
`--this` деплоит проект, чей `workdir` совпадает с текущей папкой; конфиг Флаг `-g/--global` исключает шаг 2: используется только глобальный конфиг.
ищется по обычной цепочке, так что временный локальный `./deploy.toml` Деплой проекта текущей папки (`xd deploy` без имени) ищет конфиг по этой же
переопределяет глобальный — создали файл, задеплоились, удалили. цепочке, так что временный локальный `./deploy.toml` переопределяет глобальный —
создали файл, задеплоились, удалили.
Схема — **один проект = один блок**, все параметры точечными ключами: Схема — **один проект = один блок**, все параметры точечными ключами:
@@ -161,6 +185,10 @@ export DB_URL=postgres://localhost/app
## Разработка ## Разработка
```sh ```sh
just test # fmt + clippy -D warnings + cargo test just test # fmt + clippy -D warnings + cargo test
just run # деплой из test/deploy.toml (в git не входит) just build # cargo build
just install # cargo install --path . (бинарник xd)
just run # деплой проекта github-tracker из test/deploy.toml (в git не входит)
``` ```
Схема деплоя и планы — в `docs/`, текущие задачи — в `backlog.md`.