release: cargo-release config for tag-driven releases

`cargo release patch --execute` now does what the last three releases
did by hand: bump Cargo.toml/Cargo.lock, rewrite PKGBUILD's pkgver,
stamp the "## Unreleased" changelog section with version and date,
commit as "release X.Y.Z", tag vX.Y.Z and push commit and tag to the
gitea remote (not `origin`, which is the GitHub upstream). The tag then
triggers .gitea/workflows/release.yml as before. No crates.io publish.

CHANGELOG.md gets a standing "## Unreleased" section to collect entries
between releases; README documents the flow.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Bendik Aagaard Lynghaug
2026-10-07 15:48:45 +02:00
co-authored by Claude Fable 5.1
parent 4f055935d4
commit bf16d427b8
3 changed files with 39 additions and 0 deletions
+26
View File
@@ -0,0 +1,26 @@
# cargo-release settings. Cut a release with
#
# cargo release patch # dry run, shows what would change
# cargo release patch --execute
#
# (or `minor`, `major`, or an explicit version). It bumps Cargo.toml and
# Cargo.lock, rewrites PKGBUILD's pkgver, turns the "## Unreleased"
# section of CHANGELOG.md into "## X.Y.Z (date)", commits, tags
# vX.Y.Z and pushes commit + tag to the gitea remote. That tag is what
# .gitea/workflows/release.yml builds and uploads to the [uhhm] registry.
# Not on crates.io; the package goes to the Arch registry via the tag.
publish = false
# `origin` is the upstream kennylevinsen fork on GitHub; releases go to
# project.uhhm.no, and the workflow only runs there.
push-remote = "gitea"
allow-branch = ["master"]
tag-name = "v{{version}}"
tag-message = "wldash {{version}}"
pre-release-commit-message = "release {{version}}"
pre-release-replacements = [
{ file = "PKGBUILD", search = "^pkgver=.*", replace = "pkgver={{version}}", exactly = 1 },
{ file = "PKGBUILD", search = "^pkgrel=.*", replace = "pkgrel=1", exactly = 1 },
{ file = "CHANGELOG.md", search = "^## Unreleased$", replace = "## {{version}} ({{date}})", exactly = 1 },
]