shipper
Installable release-execution facade for Rust workspaces.
A workspace release can fail after some crates publish and before the rest do. Cargo's own docs note that cargo publish --workspace is non-atomic and that a client timeout does not always mean the upload failed. Shipper gives you a plan, a preflight gate, durable state, and a recovery path for that failure mode.
Install
The stable 0.4.0 install package is shipper:
For reproducible 0.4.0 installs, pin the version:
This becomes the supported crates.io path after the v0.4.0 publish completes.
From a checkout, validate the same install facade with:
Quick start
shipper --help and shipper <subcommand> --help are the canonical command reference.
What this crate is
shipper is the user-facing package — the one you install and the one that shows up on crates.io. It wraps:
- a small binary that forwards to the CLI adapter,
- a curated library re-export over the engine (
engine,plan,types,config,state,store), - product-facing documentation.
The actual work happens in two sibling crates:
shipper-cli— CLI adapter (clap parsing, subcommands, output,pub fn run()).shipper-core— engine library with no CLI dependencies.
Use another crate when
- You want the lean embedding surface (no
clap, noindicatif) → depend onshipper-core. - You need the exact clap-driven CLI surface programmatically (custom wrappers, pre-run hooks) → depend on
shipper-cliand callshipper_cli::run(). - You want
shipperas a library but without theclapgraph →shipper = { version = "...", default-features = false }.
Scope
Shipper handles publishing, retrying, resuming, rehearsing, yanking, and fix-forward planning. It does not decide version numbers, generate changelogs, tag releases, or create GitHub releases — pair it with your preferred versioning/release workflow.
Documentation
- Project README: https://github.com/EffortlessMetrics/shipper#readme
- Full docs tree: https://github.com/EffortlessMetrics/shipper/tree/main/docs
- Configuration reference: https://github.com/EffortlessMetrics/shipper/blob/main/docs/configuration.md
Stability
Pre-1.0. Breaking changes are called out in CHANGELOG.md.
License
MIT OR Apache-2.0.