From 9c4b8cbdd735aa40eadec0c0d8e3d39db3d0f0dc Mon Sep 17 00:00:00 2001 From: duffyduck Date: Sun, 25 Oct 2026 14:00:47 +0100 Subject: [PATCH] feat(release): Versionsnummer zaehlt wie ein Kilometerzaehler MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- README.md | 2 +- host-agent/release_agent.sh | 14 +++++++++++--- release.sh | 14 +++++++++++--- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index a65af61..17b0dbc 100644 --- a/README.md +++ b/README.md @@ -672,7 +672,7 @@ cd android ### Release auf Gitea veroeffentlichen ```bash -./release.sh # Version automatisch +1 (0.2.6.1 → 0.2.6.2) +./release.sh # Version automatisch +1 (0.2.6.1 → 0.2.6.2, 0.2.6.9 → 0.2.7.0) ./release.sh 1.2.0 # oder Version selbst setzen ``` diff --git a/host-agent/release_agent.sh b/host-agent/release_agent.sh index 403c94d..cde8fa7 100755 --- a/host-agent/release_agent.sh +++ b/host-agent/release_agent.sh @@ -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 +# 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 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/") diff --git a/release.sh b/release.sh index 4c90093..e545b94 100755 --- a/release.sh +++ b/release.sh @@ -19,14 +19,22 @@ NC='\033[0m' # ── 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 +# 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 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 '"version"' android/package.json | sed -E 's/.*"version": *"([^"]*)".*/\1/')