id = "cargo-release" name = "cargo-release" homepage = "https://github.com/crate-ci/cargo-release" description = "Cargo subcommand `release`: everything about releasing a rust crate" executables = ["cargo-release"] [dotfiles] # https://docs.rs/cargo-release/latest/cargo_release/config/fn.resolve_config.html # lists the user-level sources $HOME/.release.toml and # $HOME/.config/cargo-release/release.toml. Project release.toml and Cargo.toml # metadata are repository files and are intentionally out of scope. paths = ["~/.release.toml", "[configHome]/cargo-release/release.toml"] secret = [] [commands] format = 1 label = "Release crate" description = "Bump the version, publish, tag and push a crate. Dry-run is the default; tick Execute to really release. Per-step subcommands, sign options and certificate settings are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.source]] id = "help" kind = "help" url = "https://github.com/crate-ci/cargo-release/blob/master/docs/reference.md" revision = "2026-10-27" evidence = """ Usage: cargo release [OPTIONS] [LEVEL|VERSION] [LEVEL|VERSION] Either bump by LEVEL or set the VERSION for all selected packages [possible values: major, minor, patch, release, rc, beta, alpha] --manifest-path Path to Cargo.toml -p, --package Package to process (see `cargo help pkgid`) --workspace Process all packages in the workspace --exclude Exclude packages from being processed --unpublished Process all packages whose current version is unpublished -x, --execute Actually perform a release. Dry-run mode is the default --no-confirm Skip release confirmation and version preview -v, --verbose... Pass many times for more log output --no-publish Do not run cargo publish on release --no-tag Do not create git tag --no-push Do not run git push in the last step """ [[commands.field]] id = "level" label = "Level or version" description = "Bump level, or leave empty to use the default." type = "enum" position = 0 choices = [{ value = "major", label = "major" }, { value = "minor", label = "minor" }, { value = "patch", label = "patch" }, { value = "release", label = "release" }, { value = "rc", label = "rc" }, { value = "beta", label = "beta" }, { value = "alpha", label = "alpha" }] sources = ["help"] [[commands.field]] id = "manifest_path" label = "Cargo.toml" type = "path" option = ["--manifest-path"] path = { kind = "file", role = "input" } sources = ["help"] [[commands.field]] id = "package" label = "Package" type = "string" option = ["--package", "-p"] multiple = true sources = ["help"] [[commands.field]] id = "workspace" label = "Whole workspace" type = "boolean" option = ["--workspace"] sources = ["help"] [[commands.field]] id = "exclude" label = "Exclude package" type = "string" option = ["--exclude"] multiple = true sources = ["help"] [[commands.field]] id = "unpublished" label = "Only unpublished" type = "boolean" option = ["--unpublished"] sources = ["help"] [[commands.field]] id = "execute" label = "Execute for real" description = "Without this, only a dry run is performed." type = "boolean" option = ["--execute", "-x"] effect = "exec" sources = ["help"] [[commands.field]] id = "no_confirm" label = "Skip confirmation" type = "boolean" option = ["--no-confirm"] sources = ["help"] [[commands.field]] id = "no_publish" label = "Do not publish" type = "boolean" option = ["--no-publish"] sources = ["help"] [[commands.field]] id = "no_tag" label = "Do not tag" type = "boolean" option = ["--no-tag"] sources = ["help"] [[commands.field]] id = "no_push" label = "Do not push" type = "boolean" option = ["--no-push"] sources = ["help"] [[commands.field]] id = "verbose" label = "Verbose" type = "count" option = ["--verbose", "-v"] sources = ["help"] [[commands.task]] id = "dry-run" label = "Dry run a release" fields = ["level", "workspace", "package", "verbose"] required = ["level"] [[commands.task]] id = "release" label = "Perform the release" fields = ["level", "workspace", "package", "execute", "no_confirm"] required = ["level", "execute"] set = { execute = [true] } [[commands.group]] id = "basic" label = "Basic" fields = ["level", "manifest_path", "package", "workspace", "exclude", "unpublished", "execute"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["no_confirm", "no_publish", "no_tag", "no_push", "verbose"]