Разработка

From docs/ru/DEVELOPMENT.md at b5eedc6 View on GitHub

Сборка, тестирование и выпуск ketch. Чек-лист для контрибьюторов — в CONTRIBUTING.md.

Сборка из исходников

cargo build --release                    # target/release/ketch
cargo test --workspace                   # модульные тесты и end-to-end набор; без сети
cargo clippy --workspace --all-targets   # должно быть чисто
cargo fmt --all --check                  # должно быть чисто

Исходники — это Cargo workspace: бинарник ketch в корне содержит командную строку, а crates/ketch-core — всё, что он делает: разрешение, загрузку, проверку, распаковку и линковку.

Запускайте бинарник на одноразовом дереве вместо настоящего ~/.ketch:

KETCH_ROOT=/tmp/ketch-scratch cargo run -- doctor

Выпуск

Ничего не вводится вручную. Actions → Bump and release (bump.yml) — единственный способ выпустить релиз: scripts/release.sh поднимает версию и пишет запись CHANGELOG.md одним коммитом, bump открывает с ним pull request, ждёт всех обязательных проверок, вливает его через rebase и только затем ставит тег на коммит, попавший в main, создаёт релиз и запускает release.yml, сгенерированный cargo-dist: он собирает и подписывает обе архитектуры macOS (Linux и Windows без подписи) и только после сборки всех целей загружает архивы и публикует релиз, после чего задача tap обновляет cask в pyrlyn/homebrew-tap. Красные проверки не оставляют ни тега, ни релиза.

CI (ci.yml) запускается на пушах в main, на pull request не в статусе черновика и вручную через workflow_dispatch. Перед слиянием ветки запустите проверку на этом ref и сливайте только при зелёном результате:

gh workflow run ci.yml --ref <branch>
just release minor --dry-run    # версия, которую получит релиз; ничего не меняет
just release minor              # запускает Bump and release (gh workflow run bump.yml)

ketch нет на crates.io — он поставляется архивом в GitHub-релизе, поэтому крейт никто не публикует.