63 lines
1.8 KiB
Bash
63 lines
1.8 KiB
Bash
|
|
#!/usr/bin/env bash
|
|||
|
|
# bump.sh – Version erhöhen, CHANGELOG aktualisieren, committen und pushen
|
|||
|
|
#
|
|||
|
|
# Verwendung:
|
|||
|
|
# bash .claude/scripts/bump.sh patch "Beschreibung der Änderung"
|
|||
|
|
# bash .claude/scripts/bump.sh minor "Beschreibung der Änderung"
|
|||
|
|
# bash .claude/scripts/bump.sh major "Beschreibung der Änderung"
|
|||
|
|
|
|||
|
|
set -euo pipefail
|
|||
|
|
|
|||
|
|
BUMP_TYPE="${1:-patch}"
|
|||
|
|
MESSAGE="${2:-}"
|
|||
|
|
|
|||
|
|
if [[ -z "$MESSAGE" ]]; then
|
|||
|
|
echo "Fehler: Beschreibung fehlt."
|
|||
|
|
echo "Verwendung: bash .claude/scripts/bump.sh [patch|minor|major] \"Beschreibung\""
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
ROOT="$(git rev-parse --show-toplevel)"
|
|||
|
|
VERSION_FILE="$ROOT/VERSION"
|
|||
|
|
CHANGELOG_FILE="$ROOT/CHANGELOG.md"
|
|||
|
|
|
|||
|
|
# Aktuelle Version lesen
|
|||
|
|
CURRENT=$(cat "$VERSION_FILE" | tr -d '[:space:]')
|
|||
|
|
IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT"
|
|||
|
|
|
|||
|
|
# Version erhöhen
|
|||
|
|
case "$BUMP_TYPE" in
|
|||
|
|
major) MAJOR=$((MAJOR + 1)); MINOR=0; PATCH=0 ;;
|
|||
|
|
minor) MINOR=$((MINOR + 1)); PATCH=0 ;;
|
|||
|
|
patch) PATCH=$((PATCH + 1)) ;;
|
|||
|
|
*)
|
|||
|
|
echo "Fehler: Ungültiger Typ '$BUMP_TYPE'. Erlaubt: patch, minor, major"
|
|||
|
|
exit 1
|
|||
|
|
;;
|
|||
|
|
esac
|
|||
|
|
|
|||
|
|
NEW_VERSION="$MAJOR.$MINOR.$PATCH"
|
|||
|
|
DATE=$(date +%Y-%m-%d)
|
|||
|
|
|
|||
|
|
echo "Bump: $CURRENT → $NEW_VERSION ($BUMP_TYPE)"
|
|||
|
|
|
|||
|
|
# VERSION aktualisieren
|
|||
|
|
echo "$NEW_VERSION" > "$VERSION_FILE"
|
|||
|
|
|
|||
|
|
# CHANGELOG-Eintrag einfügen (nach der ersten ---)
|
|||
|
|
ENTRY="## [$NEW_VERSION] - $DATE\n\n### Changed\n- $MESSAGE\n\n---\n"
|
|||
|
|
# Füge nach der ersten '---' Zeile ein
|
|||
|
|
awk -v entry="$ENTRY" '/^---$/ && !inserted { print; printf "%s", entry; inserted=1; next } { print }' \
|
|||
|
|
"$CHANGELOG_FILE" > "$CHANGELOG_FILE.tmp" && mv "$CHANGELOG_FILE.tmp" "$CHANGELOG_FILE"
|
|||
|
|
|
|||
|
|
# Commit und Push
|
|||
|
|
git -C "$ROOT" add "$VERSION_FILE" "$CHANGELOG_FILE"
|
|||
|
|
git -C "$ROOT" commit -m "chore: bump version to $NEW_VERSION
|
|||
|
|
|
|||
|
|
$MESSAGE
|
|||
|
|
|
|||
|
|
Version: $NEW_VERSION"
|
|||
|
|
git -C "$ROOT" push
|
|||
|
|
|
|||
|
|
echo "Fertig: Version $NEW_VERSION committed und gepusht."
|