#release #tool #crate

bin+lib releaser

Workspace releasing tool. All crates from workspace will be released on crates.io

27 releases (7 breaking)

Uses new Rust 2021

new 0.8.2 Jan 15, 2022
0.8.0 Dec 26, 2021
0.7.4 Nov 22, 2021
0.3.2 May 7, 2021
0.3.1 Mar 30, 2021

#125 in Development tools

Download history 40/week @ 2021-10-01 23/week @ 2021-10-08 17/week @ 2021-10-15 2/week @ 2021-10-22 149/week @ 2021-10-29 42/week @ 2021-11-05 37/week @ 2021-11-19 8/week @ 2021-11-26 51/week @ 2021-12-03 11/week @ 2021-12-10 7/week @ 2021-12-17 22/week @ 2021-12-24 32/week @ 2021-12-31 15/week @ 2022-01-07 29/week @ 2022-01-14

99 downloads per month

MIT license

69KB
2K SLoC

crates.io Rust codecov

Installation

Install Rust and then run:

cargo install releaser

Rust workspace release procedure

  1. Read existing version from crate's toml file
  2. Increment version in all workspace's crate's toml files and it's dependencies
  3. Commit all version changes
  4. Create new git tag
  5. Run cargo publish --manifest-path …
  6. Wait some time (20 seconds by default) before publish next crate so as to use new version
  7. Push git tag

Rust crate release procedure

  1. Read existing version from crate's toml file
  2. Increment version in the toml file
  3. Commit all version changes
  4. Create new git tag
  5. Run cargo publish --manifest-path …
  6. Push git tag

Command line syntax:

Rust releasing workspace tool

USAGE:
    releaser.exe [SUBCOMMAND]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

SUBCOMMANDS:
    b       Create brew package manager Formula (package definition file) to publish it into a tap (MacOS and Linux
            only)
    c       Release single crate specified by path
    help    Prints this message or the help of the given subcommand(s)
    w       Release workspace specified by path

Releasing workspace

Release workspace specified by path

USAGE:
    releaser w [OPTIONS] <INCR> <PATH>

FLAGS:
    -a, --all        Whether to add option --all-features to cargo publish command
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -d, --delay <delay>    Delay in seconds between publish next workflow's crate [default: 20]

ARGS:
    <INCR>    Version increment. One of the following: major, minor or patch
    <PATH>    Sets workspace root path

Releasing simple crate

Release single crate specified by path

USAGE:
    releaser c <INCR> <PATH>

FLAGS:
    -a, --all        Whether to add option --all-features to cargo publish command
    -h, --help       Prints help information
    -V, --version    Prints version information

ARGS:
    <INCR>    Version increment. One of the following: major, minor or patch
    <PATH>    Sets crate's root path

Creating brew package manager Formula (package definition file) to publish it into a tap (MacOS and Linux only)

Create brew package manager Formula (package definition file) to publish it into a tap (MacOS and Linux only)

USAGE:
    releaser b [OPTIONS] --base <base> --crate <crate>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -b, --base <base>        Base URI of downloaded artifacts
    -c, --crate <crate>      Sets crate's path where Cargo.toml located
    -l, --linux <linux>      Sets Linux package directory path
    -m, --macos <macos>      Sets Mac OS package directory path
    -u, --output <output>    File path to save result to. If not set result will be written into stdout

Creating scoop package manager JSON definition file to publish it into a bucket (Windows only)

USAGE:
    releaser s [OPTIONS] --base <base> --binary <binary> --crate <crate> --exe <exe>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -b, --base <base>        Base URI of downloaded artifacts
    -i, --binary <binary>    Sets 64-bit binary package directory path
    -c, --crate <crate>      Sets crate's path where Cargo.toml located
    -e, --exe <exe>          Sets Windows executable name
    -u, --output <output>    File path to save result to. If not set result will be written into stdout

Dependencies

~9MB
~210K SLoC

a