shipper-cli 0.3.0-rc.2

CLI adapter for Shipper. Install with `cargo install shipper --locked`; this crate is for embedders who want the exact CLI surface programmatically.
Documentation
# shipper-cli

CLI adapter crate for Shipper. Owns `clap` parsing, subcommand dispatch,
help text, and progress rendering. Exposes `pub fn run() -> anyhow::Result<()>`
as the embedding entry point; the `shipper-cli` binary is a three-line
wrapper over `run`.

## Use the `shipper` crate to install

Most users should install the product via the `shipper` crate:

```bash
cargo install shipper --locked
```

That installs a binary named `shipper` that forwards to the same `run`
function in this crate.

## When to depend on `shipper-cli` directly

Reach for this crate when you need the exact CLI surface programmatically
— for example, a wrapper that invokes Shipper after extra preflight
steps of your own:

```rust,no_run
fn main() -> anyhow::Result<()> {
    // ... custom preflight ...
    shipper_cli::run()
}
```

For programmatic use **without** a `clap` dependency graph, depend on
[`shipper-core`](https://crates.io/crates/shipper-core) instead — that's
where the engine lives.

## Installing the adapter directly

The `shipper-cli` crate ships its own `shipper-cli` binary, a
three-line wrapper over `shipper_cli::run()` — the same entry point
the `shipper` install uses. Install the adapter directly when you
want the `shipper-cli` binary name (e.g., existing pipelines, or
you prefer the adapter crate explicitly):

```bash
# From crates.io — same code path as `cargo install shipper`
cargo install shipper-cli --locked

# From this repository
cargo install --path crates/shipper-cli --locked
```

Most users should prefer `cargo install shipper --locked`, which
installs a binary named `shipper` against the same adapter.

## Core commands

- `shipper plan` — print publish order and skipped packages.
- `shipper preflight` — run checks without publishing.
- `shipper publish` — execute publish and persist state.
- `shipper resume` — continue from previous state.
- `shipper status` — compare local versions to registry versions.
- `shipper doctor` — print environment and auth diagnostics.
- `shipper rehearse` — package + verify + publish to a rehearsal registry.
- `shipper yank` / `shipper plan-yank` — receipt-driven containment.
- `shipper fix-forward` — plan a minimal repair of a partial release.

## Architecture

```
shipper (install face — `cargo install shipper`)
  -> shipper-cli (this crate — CLI adapter, pub fn run())
       -> shipper-core (engine — library only)
```

## Related crates and docs

- Install face: <https://crates.io/crates/shipper>
- Engine library: <https://crates.io/crates/shipper-core>
- Project README: <https://github.com/EffortlessMetrics/shipper#readme>
- Configuration reference: <https://github.com/EffortlessMetrics/shipper/blob/main/docs/configuration.md>