🦀 Announcing cargo-verctl: Version automation for your Cargo manifests and workspaces

Hi everyone,

I’m excited to share cargo-verctl, a Cargo subcommand for automated version management — especially useful in CI/CD environments or multi-crate workspaces.

:sparkles: Highlights

  • Add or update version fields automatically in Cargo.toml
  • Bump major, minor, or patch interactively
  • CI-friendly non-interactive mode
  • Independent workspace crate version management
  • Written in Rust, no external dependencies

:toolbox: Installation

cargo install cargo-verctl

:puzzle_piece: Example

cargo verctl --list
cargo verctl --bump patch
cargo verctl --set 1.2.3

:books: Links

MIT licensed — contributions, PRs, and feedback welcome!

Andrey Yelabugin (@sibman)
#rustlang #cargo

2 Likes

Congrats!

Some suggestions

  • consider cargo_metadata for finding workspace members
  • consider semver for parsing version numbers

btw were you aware of cargo-edits cargo set-version? Some features from that that may be of interest

  • bumping workpace.package.version
  • updating version reqs for dependents within the workspace

cargo release version allows customizing the dependent version req update.

A feature I've been meaning to add but haven't is improving the build-metadata behavior, like

  • preserve on version change
  • auto create from public dependencies (e.g. clap_cargo can use it to make it clear which versions work with which major versions of clap and cargo_metadata

Something I haven't yet figured out is how to refer to relative vs absolute version bumps. For 0.1.0, major can mean you want to bump to either 0.2.0 or 1.0.0.