Skip to main content

Crate shipper

Crate shipper 

Source
Expand description

§Shipper

Installable product face for the Shipper release engine.

This is the crate you install with cargo install shipper --locked. It ships the shipper binary, which delegates to the CLI adapter in shipper-cli — which in turn calls the engine in shipper-core.

§Architecture

shipper (this crate — install façade, curated re-export)
  -> shipper-cli (CLI adapter: clap parsing, dispatch, output)
       -> shipper-core (engine: plan, preflight, publish, resume, …)

§Install

cargo install shipper --locked

§Embedding

For programmatic use — driving a publish from your own Rust code without a CLI dependency graph (no clap, no indicatif) — you have two options:

  1. Depend on shipper-core directly. That crate is the stable embedding surface.

  2. Or disable the default cli feature on this crate:

    shipper = { version = "...", default-features = false }

    This drops the shipper-cli (and therefore clap) dependency while keeping the curated re-export paths below.

This crate re-exports a curated set of shipper-core modules for convenience so shipper::engine, shipper::plan, etc. keep resolving for drivers that prefer the product name:

  • engine — preflight, publish, resume, rehearsal
  • plan — build a deterministic publish plan
  • types — domain types (specs, receipts, state, events)
  • config — load and merge .shipper.toml
  • state — read persisted execution state and events
  • store — the StateStore trait and filesystem implementation

Engine internals (auth, cargo, encryption, git, lock, registry, retry, runtime, webhook, cargo_failure) are intentionally not re-exported here. Reach for them through shipper-core directly — that’s a signal you’re embedding, not driving.

Modules§

config
Configuration file (.shipper.toml) loading and merging.
engine
Core publish, preflight, and resume logic.
plan
Workspace analysis and topological plan generation.
state
Layer 3: persistence. State, events, receipts. Layer 3: persistence. State, events, receipts, and the StateStore trait.
store
StateStore trait for pluggable persistence backends.
types
Domain types: specs, plans, options, receipts, errors.