feat(release): Versionsnummer zaehlt wie ein Kilometerzaehler

Hintere Stellen laufen 0..9 und uebertragen nach vorne (0.2.6.9 → 0.2.7.0,
0.2.9.9 → 0.3.0.0), die vorderste zaehlt einfach weiter (9.9.9.9 → 10.0.0.0).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-25 14:00:47 +01:00
co-authored by Claude Opus 5.5
parent 9ad402876d
commit 9c4b8cbdd7
3 changed files with 23 additions and 7 deletions
+11 -3
View File
@@ -34,14 +34,22 @@ RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; CYAN='\033[0;36m'; NC
# ── Parameter ────────────────────────────────────────────────────────
# Ohne Angabe: letzte Stelle automatisch hochzaehlen. Mit Angabe: genau diese.
# Naechste Version: hoechste aus Datei-Version und letztem Git-Tag, letzte
# Stelle +1 (0.2.6.1 → 0.2.6.2). Aufruf: next_version <aktuelle> <tag-prefix>
# Naechste Version: hoechste aus Datei-Version und letztem Git-Tag, dann wie
# ein Kilometerzaehler +1: hintere Stellen laufen 0..9 und uebertragen nach
# vorne (0.2.6.9 → 0.2.7.0, 0.2.9.9 → 0.3.0.0), die vorderste zaehlt einfach
# weiter (9.9.9.9 → 10.0.0.0). Aufruf: next_version <aktuelle> <tag-prefix>
next_version() {
local cur="$1" prefix="$2" tagv best
tagv=$(git tag -l "${prefix}*" | sed "s/^${prefix}//" | grep -E '^[0-9]+(\.[0-9]+)+$' | sort -V | tail -1)
best=$(printf '%s\n%s\n' "$cur" "$tagv" | grep -E '^[0-9]+(\.[0-9]+)+$' | sort -V | tail -1)
[ -z "$best" ] && best="0.0.0.0"
awk -F. -v OFS=. '{ $NF = $NF + 1; print }' <<< "$best"
awk -F. -v OFS=. '{
for (i = NF; i >= 1; i--) {
if (i == 1 || $i < 9) { $i = $i + 1; break }
$i = 0 # 9 → 0, Uebertrag nach vorne
}
print
}' <<< "$best"
}
CURRENT=$(grep -m1 "versionName" android/app/build.gradle | sed -E "s/.*versionName '([^']*)'.*/\1/")