| Crates.io | bver |
| lib.rs | bver |
| version | 0.0.4 |
| created_at | 2026-01-19 21:48:20.760719+00 |
| updated_at | 2026-01-22 11:57:46.397971+00 |
| description | A bump-version tool for multi-language projects |
| homepage | |
| repository | https://github.com/flaport/bver |
| max_upload_size | |
| id | 2055407 |
| size | 712,814 |
A bump-version tool for multi-language projects

major.minor.patch versions1.2.3a1 to 1.2.3-alpha.1)bver.toml, pyproject.toml, package.json, or Cargo.tomlcurl -LsSf https://github.com/flaport/bver/releases/latest/download/install.sh | sh
powershell -ExecutionPolicy ByPass -c "irm https://github.com/flaport/bver/releases/latest/download/install.ps1 | iex"
cargo install bver
# Show current version
bver current
# Show full configuration
bver config
# Bump version
bver bump patch # 1.2.3 -> 1.2.4
bver bump minor # 1.2.3 -> 1.3.0
bver bump major # 1.2.3 -> 2.0.0
# Pre-release versions
bver bump alpha # 1.2.3 -> 1.2.3a1
bver bump beta # 1.2.3 -> 1.2.3b1
bver bump rc # 1.2.3 -> 1.2.3rc1
# Post-release and dev versions
bver bump post # 1.2.3 -> 1.2.3.post1
bver bump dev # 1.2.3 -> 1.2.3.dev1
# Release (strip pre-release suffix)
bver bump release # 1.2.3a1 -> 1.2.3
# Set explicit version
bver bump 2.0.0
# Force git operations (overwrite tags, force push)
bver bump patch --force
bver.toml)current-version = "1.2.3"
# Optional settings
context-lines = 3 # Lines of context in diff preview
default-kind = "any" # any | simple | python | semver
on-invalid-version = "error" # error | cast
[git]
action = "commit-and-tag" # disabled | commit | commit-and-tag | commit-tag-and-push
run-pre-commit = "when-present" # enabled | disabled | when-present
tag-template = "{new-version}" # Template for git tag name
commit-template = "Bump version from {current-version} to {new-version}"
[[file]]
src = "src/version.py"
kind = "python" # pep440
[[file]]
src = "package.json"
kind = "semver" # javascript, rust, ...
[[file]]
src = "test.txt"
kind = "simple" # strict major.minor.patch format.
The tag-template and commit-template settings support these variables:
{current-version} - the version before bumping{new-version} - the version after bumpingExample: tag-template = "v{new-version}" produces tags like v1.2.3.
pyproject.toml)[project]
version = "1.2.3"
[tool.bver.git]
action = "commit-tag-and-push"
[[tool.bver.file]]
src = "src/mypackage/__init__.py"
kind = "python"
package.json){
"version": "1.2.3",
"bver": {
"git": {
"action": "commit-and-tag"
},
"file": [
{ "src": "src/version.ts", "kind": "semver" }
]
}
}
Cargo.toml)[package]
version = "1.2.3"
[package.metadata.bver.git]
action = "commit-and-tag"
[[package.metadata.bver.file]]
src = "src/lib.rs"
kind = "semver"
| Kind | Format | Example |
|---|---|---|
any |
Any string (no validation) | v1.2.3-custom |
simple |
major.minor.patch |
1.2.3 |
python |
PEP 440 | 1.2.3a1.post1.dev1+local |
semver |
Semantic Versioning | 1.2.3-alpha.1+build |
When on-invalid-version = "cast", bver automatically converts versions between formats:
1.2.3a1 -> 1.2.3)1.2.3a1 -> 1.2.3-alpha.1)When bumping versions, an interactive TUI shows proposed changes:
| Key | Action |
|---|---|
↑/↓ or j/k |
Navigate changes |
Space |
Toggle selection |
a |
Select all |
n |
Deselect all |
Enter |
Apply selected changes |
q/Esc |
Cancel |
| Setting | Behavior |
|---|---|
disabled |
No git operations |
commit |
Stage all + commit |
commit-and-tag |
Stage all + commit + annotated tag |
commit-tag-and-push |
Stage all + commit + tag + push + push tag |
Use --force to overwrite existing tags and force push.
MIT