magdalena

Log | Files | Refs | README | LICENSE

commit 447368a7b2cd4034ff4d4928fb1aa4ae3317fe58
parent ea661a8f54b6407e299e1989faf0b7448ff323ac
Author: mtmn <miro@haravara.org>
Date:   Thu,  7 May 2026 18:48:13 +0200

feat: add release script

Diffstat:
Ahack/release | 54++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 54 insertions(+), 0 deletions(-)

diff --git a/hack/release b/hack/release @@ -0,0 +1,54 @@ +#!/usr/bin/env bash +set -euo pipefail + +require() { + command -v "$1" &>/dev/null || { + echo "error: $1 not found" + exit 1 + } +} +require git +require git-cliff + +# --- pre-flight --- + +if [ "$(git rev-parse --abbrev-ref HEAD)" != "master" ]; then + echo "error: not on master branch" + exit 1 +fi + +if [ -n "$(git status --porcelain)" ]; then + echo "error: working tree is dirty" + exit 1 +fi + +# --- version calculation --- + +next=$(git-cliff --bumped-version | sed 's/^v//') + +if git tag | grep -qx "v$next"; then + echo "no releasable commits since v$next" + exit 0 +fi + +echo "releasing -> v$next" + +# --- update build.zig.zon --- + +sed -i "s/\.version = \"[^\"]*\"/.version = \"$next\"/" build.zig.zon +git add build.zig.zon + +# --- changelog --- + +git-cliff --tag "v$next" --output CHANGELOG.md +sed -i -e :a -e '/^\s*$/{$d;N;ba' -e '}' CHANGELOG.md +git add CHANGELOG.md + +git commit -m "chore: release v$next" + +# --- tag and push --- + +git tag "v$next" +git push origin master --tags + +echo "released v$next successfully"