From 1d259feae6671fed420fa69f8e4d110780e5a48b Mon Sep 17 00:00:00 2001 From: Ku6epXBOCTuK Date: Mon, 7 Sep 2026 17:22:34 +0500 Subject: [PATCH] docs: update readme --- README.md | 62 ++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 45 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 6004633..c0709ce 100644 --- a/README.md +++ b/README.md @@ -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 явный путь к конфигу (работает и внутри подкоманд) +-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`.