#cargo #utilities #utils #workspace

cargo_utils

Utilities around cargo and Rust workspaces

3 releases

Uses new Rust 2021

0.1.2 Nov 4, 2022
0.1.1 Oct 26, 2022
0.1.0 Oct 9, 2022

#442 in Development tools

Download history 25/week @ 2022-10-07 4/week @ 2022-10-14 29/week @ 2022-10-21 35/week @ 2022-10-28 59/week @ 2022-11-04 32/week @ 2022-11-11 27/week @ 2022-11-18 16/week @ 2022-11-25

144 downloads per month
Used in 2 crates (via release_plz_core)

MIT/Apache

3KB

release-plz-logo

Crates.io CI Docker

Release-plz updates the versions and changelogs of your rust packages, by analyzing your git history, based on conventional commits:

  • release-plz update updates your project locally, without committing any change.
  • release-plz release-pr opens a GitHub Pull Request.

Once the changes are merged to the main branch, you can use release-plz release to publish the new versions of the packages.

GitHub action

The simplest way to update your project with release-plz is to use the GitHub action.

Installation

Docker

docker pull marcoieni/release-plz

Cargo

  • Install the rust toolchain in order to have cargo installed by following this guide.
  • run cargo install release-plz --locked

AUR

release-plz can be installed from available AUR packages using an AUR helper. For example:

  • paru -S release-plz
  • paru -S release-plz-git (VCS package)

Example Usage

Make sure you have git installed when running release-plz.

Update

With release-plz update you can update the version and the changelog of the packages of a local workspace.

In the following example, I run release-plz on the release-plz project itself. Release-plz increases the version and the changelog of the packages with unpublished changes.

release-plz update

Release PR

With release-plz release-pr you can open a GitHub Pull Request that updates the version of the packages of a local workspace.

In the following example, I run release-plz on the release-plz project itself. Release-plz opens a PR that increases the version and the changelog of the packages with unpublished changes.

release-plz release-pr

Publishing

The goal of release-plz is to create a fully automated release pipeline. This means you can easily release changes more frequently, without the fear of doing typo or other subtle manual mistakes you can make when releasing from your terminal.

You can release all the unpublished packages by running release-plz release.

Generate shell completions

zsh

To load completions in your current shell session:

$ autoload bashcompinit; bashcompinit
$ source <(release-plz generate-completions)

To load completions for every new session, execute once:

$ release-plz generate-completions zsh > _release-plz
$ sudo mv _release-plz /usr/local/share/zsh/site-functions/

bash

To load completions in your current shell session:

$ source <(release-plz generate-completions)

To load completions for every new session, execute once:

$ release-plz generate-completions bash > ~/.local/share/bash-completion/completions/release-plz

Note: package bash-completion is required for this to work.

fish

To load completions in your current shell session:

$ release-plz generate-completions fish | source

To load completions for every new session, execute once:

$ release-plz generate-completions fish > $HOME/.config/fish/completions/release-plz.fish

Changelog format

Release-plz generates the changelog by using git-cliff. By default, release-plz uses the keep a changelog format. You can customize the changelog format, by providing a git-cliff configuration file with the --changelog-config argument.

Similar projects

  • release-please: release-plz is inspired by release-please, but instead of determining the next versions based on git tags, release-plz compares local packages with the ones published in the cargo registry. Plus, release-plz doesn't need any configuration.
  • cargo smart-release: Fearlessly release workspace crates and with beautiful semi-handcrafted changelogs.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

See CONTRIBUTING.md.

Credits

Parts of the codebase are inspired by:

Dependencies

~1–1.7MB
~36K SLoC