Cargo-release is a cargo subcommand that automates your libraries
release process. The idea was inspired by Clojure's leiningen, which
release command does exact same thing.
Typically, when you decide to release a library to crates.io, you need to go through following steps at least:
- bump version in Cargo.toml
- create a git tag for the release
- push tags/commits to github
cargo-release command deals these tasks for you. In addition, it
increases your patch version and add a
pre extension after
publish. The Java/Maven world uses a
SNAPSHOT version for
pre-release. What's sad, no other package manager follows this great
idea. With this pre-release extension, users are able to tell if your
master branch is on a released version or not.
By default, cargo-release removes pre-release extension as the version
to release. You can override this behavior by a
--level. The value
--level can be
patch. As the name
suggests, it increases different part of a semver version.
For multi-crates repository,
cargo-release reads you sub-directory
name and use it as prefix of git tag to avoid conflicts.
Some more features are planned for this tool, for instance:
- Custom tag prefix
- Build docs and push to gh-pages
I hope this tool can be used as a standard of rust library release
process. You can install this tool by
cargo-release. And the github repo is