Build Status

rusty-release

A command line tool to make a semi-automatic release of a cargo project.

There's semantic-rs which wants to be fully automatic by encoding information into the commit messages und using it to determine the new version number and to create the Changelog.

I wanted a simpler tool which gives the user more control about the new version number and the Changelog.

You've to be explicit about the new version number by specifing which part of the version number should be incremented (e.g. rusty-release minor) and you've to write the Changelog by yourself, rusty-release will only put the new version number at the top of the Changelog and open it.

Installation

sh $ cargo install rusty-release

The build binary will be located at ~/.cargo/bin/rusty-release.

Usage

rusty-release has to be called with a version (rusty-release <VERSION>), where <VERSION> has to be either major, minor, patch or current. major/minor/patch increment the appropriate part of the current version number and current makes a release with the current version number. So current is most likely useful for the first, initial release.

The release process:

Configuration

If available, the configuration file .rusty-release.toml is read from the home directory and from the cargo project root directory (where the Cargo.toml resides).

The current supported configuration (default configuration displayed) is:

```toml

publish to crates.io

cargo_publish = true

push to git remote repository

git_push = true

string template for the creation of the commit message, currently the two

placeholders '' - the name of the cargo project - and

'' - the version of the release - are supported

commit_message = " "

a string template like 'commit_message' supporting the same placeholders

tag_name = "v"

the editor command for opening the changelog, for the best experience the

editor command should be able to open multiple files in a split view,

first the environment variables $EDITOR and $VISUAL are checked and if

they aren't available then "gvim -o" is used

editor = "gvim -o" ```