Release doctor for idiots — just ship it
You want your crates on crates.io, in the right order, without half-breaking the world. One command. It checks everything, publishes each repo after the ones it depends on, and STOPS the instant anything goes wrong.
The one command
cd workspace_nordisk # or wherever your nornir-workspace.toml lives
nornir release doctor --publish --bump patch
That's it. It assesses the whole constellation, refuses if anything is broken, then publishes every public repo to crates.io — dependencies first — and fail-stops if a single crate fails. Private repos are skipped automatically.
If it complains
"version=" / path-dep-version gaps — a crate has a path dependency with no version. Auto-fix it, then run again:
nornir release doctor --fix
nornir release doctor --publish --bump patch
Scared? Watch it pretend-publish first (touches nothing on crates.io):
nornir release doctor --publish --publish-dry-run --bump patch
If it stops mid-way
It fail-stops on purpose so you can't half-break things. Read the error, fix the cause, then finish without re-bumping or re-publishing what already shipped:
nornir release doctor --publish --bump keep
--bump keep publishes the current versions and skips everything already on crates.io — safe to run over and over until it's done. Stopped at a specific repo? Skip ahead:
nornir release doctor --publish --bump keep --publish-from facett
Messed up? Undo it
nornir release undo <release-id> --yank
(The release-id is printed at the end of every real run.) It un-bumps, restores patches, and yanks the crates.io uploads (uploads can't be deleted, only yanked).
First time on a new machine
You need a crates.io token once — the doctor can't make one for you:
- crates.io → Account → API Tokens → create a token.
cargo login <paste-token>
The four buttons, in order
nornir release doctor # look (read-only)
nornir release doctor --fix # auto-fix the mechanical stuff
nornir release doctor --rehearse # dry-run the whole thing locally (fake registry)
nornir release doctor --publish --bump patch # SHIP IT
One honest note
Not everything can be fixed automatically. When it can't, the doctor tells you exactly what's wrong and what to do — it never guesses. If it says a dependency isn't part of the release (e.g. modgunn), or asks you to make a choice, that's a real decision only you can make. Do what it says, then run the command again.