commit c9d114e9fe4f0b9d4483b7122e6b55f18e52e3df from: mtmn date: Wed May 6 22:46:23 2026 UTC feat: add `release` script commit - 8c81d1baa0b4b98e6531d1d3ef7dd137a711d05f commit + c9d114e9fe4f0b9d4483b7122e6b55f18e52e3df blob - /dev/null blob + dea15fd48da875489377b25cabbd2bc881bc30e7 (mode 755) --- /dev/null +++ hack/release @@ -0,0 +1,38 @@ +#!/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 +require cargo +require cargo-release + +# --- pre-flight --- + +if [ -n "$(git status --porcelain)" ]; then + echo "error: working tree is dirty" + exit 1 +fi + +next=$(git-cliff --bumped-version 2>/dev/null | 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" + +# --- release --- + +cargo release "$next" --execute + +# --- changelog --- + +git-cliff --tag "v$next" --output CHANGELOG.md +git add CHANGELOG.md +git commit --amend --no-edit +git push --force