Crates.io | cargo-smart-release |
lib.rs | cargo-smart-release |
version | 0.21.3 |
source | src |
created_at | 2021-08-13 08:56:34.566689 |
updated_at | 2024-01-04 16:25:12.176848 |
description | Cargo subcommand for fearlessly releasing crates in workspaces. |
homepage | |
repository | https://github.com/Byron/cargo-smart-release |
max_upload_size | |
id | 435627 |
size | 520,683 |
cargo smart-release
Fearlessly release workspace crates and with beautiful semi-handcrafted changelogs.
cargo smart-release
needs no extra flags to do the right thing™️ smartly. If your intervention is needed it will let you know before it makes changes.cargo release
cargo changelog
writes changelogs non-destructively, and only that, leaving the release workflow to cargo-release.If seeing is believing, here is a 12 minute demonstration, and the same in 30 minutes is also available.
When developing various crates in a workspace, when committing changes and if the edit is breaking, a feature, or another change I want to see in changelogs, conventional git messages will be used. This helps building changelog scaffolding automatically later.
When ready for releasing a particular crate or set of crates of interest, run cargo smart-release [<crate-name> ...]
to simulate a release. For particularly thorough
but error-prone simulations (as in false positives) one could run cargo smart-release --dry-run-cargo-publish
. To polish changelogs, run cargo changelog --write <crate-name>
to update the scaffolding and edit it by hand until it fits.
After evaluating the release procedure and following instructions,
cargo smart-release --execute
will cause the fully automatic release of one or more crates.
There are various other options that shouldn't be needed in the common case, use cargo smart-release --help
to see them.
Via cargo
, which can be obtained using rustup
cargo install cargo-smart-release
--execute
flaggitoxide
technology to the fullestcargo release
cargo-release
is the reason this tool exists, as it got me addicted to an all automatic release workflow that knows git. This works perfectly
for simple workspaces or single-crate workspaces, as of 2021-08-12, so use it: cargo install cargo-release
.
Here is what cargo smart-release
does differently: "It tries really hard to do what I want most of the time when publishing workspace gitoxide
crates".
gitoxide
to have a reason to make it much more convenient and more feasible for application authors (aka dog-fooding)crate = { version = "1" }
instead of `crate = "1".^
, like =
gitoxide
, there are only very few regression tests with little coverage.src/
directory is used, unless there is only a single crate in the workspace. This value is hard-coded.Thanks to cargo-release for showing the way and for incredible fast response times. I'd recommend everyone to participate there instead of writing your own.
Special thanks go to git-cliff which gave me the nudge needed to want to write my own.