Розробка

From docs/uk/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-релізі, тому крейт ніхто не публікує.