18 unstable releases (3 breaking)
|0.5.9||Sep 11, 2020|
|0.5.8||Aug 12, 2020|
|0.4.4||Aug 11, 2020|
|0.3.1||Aug 8, 2020|
|0.2.1||Aug 8, 2020|
#44 in Cargo plugins
155 downloads per month
Crate Version Manager (CVM) helps maintain crate versions between git branches, which can be used by CI workflows to ensure rust crate versions are up-to-date.
CVM checks the current
Cargo.toml file for
workspace.members, iterates through all the crates in the workspace, checks if any workspace's
src/ directory has changed,
and then checks whether the version has been changed compared to a target branch, which defaults to
If the version has not been incremented compared to the target branch, and there have been changes to the source files, then CVM will either print a warning to the terminal or panic.
- Rust toolchain
- Git ^2.22.0
cargo install cargo-cvm
cargo cvm --help
cargo-cvm-cvm USAGE: cargo-cvm cvm [FLAGS] [OPTIONS] FLAGS: -x, --check Panic if the versions are out-of-date -c, --commit git commit updated version(s), otherwise will only add the files to git. Can only be used with --fix or --force flags -f, --fix Automatically fix the version if it is outdated. By default, this will bump the minor version, unless otherwise specified by the --semver option -F, --force Force a version bump. Can use be used with --semver option to determine version type -h, --help Prints help information -V, --version Prints version information -w, --warn Warn if the versions are out-of-date OPTIONS: -b, --branch <branch> Which branch to compare to the current. Will attempt to find the version in the target branch and check if the version has been bumped or not. -r, --remote <remote> Determine which remote to use for the target branch. Defaults to `origin`. -s, --semver <semver> Type of Semantic Versioning; i.e. `minor`, `major`, or `patch`. Defaults to `minor` -k, --ssh-key <ssh-key> Provide the path to your ssh private key for authenticating against remote git hosts. Defaults to $HOME/.ssh/id_rsa
cargo cvm --check
This command will
panic! if a workspace's version is out of date.
cargo cvm --fix --semver [major, minor, patch]
This command bumps the semantic versioning of the crate given the type of semantic version provided, i.e.
patch. By default, version updates use
cargo cvm -f is run on an already up-to-date crate version, it will have no affect.
NOTE: If you run this command in a workspace with multiple members that are outdated, it will apply the same semantic versioning type across all crates, which may not be correct.
If you want to bump multiple versions that are not the same semantic version type, e.g. minor, then it is best to run this command inside the crate directory.
cargo cvm --force --semver [major, minor, patch]
cargo cvm -F will force update a version, even if the workspace has an up-to-date version.
cargo cvm --warn
cargo cvm -x, this command will print errors when versions are out of date, but in this case, the command will not
panic! when a crate is outdated.
cargo cvm --branch <target-branch>
By default, CVM compares against the
master branch. However, using the
-b flag, you can specify a target branch to compare versions against.