commit - 683c655f8651b2507c53e78b9b6a9a38c97284f6
commit + 78ac043538b76d86e7772a363b0b43e3f6894c73
blob - dea15fd48da875489377b25cabbd2bc881bc30e7
blob + 9e41e886d2a1d833aef38d059da707256f01e9d9
--- hack/release
+++ hack/release
#!/usr/bin/env bash
set -euo pipefail
-require() { command -v "$1" &>/dev/null || {
- echo "error: $1 not found"
- exit 1
-}; }
+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 [ "$(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
-next=$(git-cliff --bumped-version 2>/dev/null | sed 's/^v//')
+# --- 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
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
+git commit -m "chore: update CHANGELOG for v$next"
+
+# --- tag and push ---
+
+git tag "v$next"
+git push origin master --tags
+
+echo "released v$next successfully"