Vierstellige Gambio-Versionsnummern ermöglichen

This commit is contained in:
2026-07-23 09:30:01 +02:00
parent ed2bb21548
commit 8cd291a2fe
+29 -39
View File
@@ -120,63 +120,53 @@ normalize_gambio_version()
{ {
echo "$1" \ echo "$1" \
| sed -E 's/^v//' \ | sed -E 's/^v//' \
| sed -E 's/[^0-9.].*$//' | grep -oE '^[0-9]+(\.[0-9]+)*'
} }
compare_gambio_versions() compare_gambio_versions()
{ {
local version_a local version_a
local version_b local version_b
local a_major local IFS='.'
local a_minor local a_parts
local a_patch local b_parts
local b_major local max_parts
local b_minor local i
local b_patch local a_part
local b_part
version_a=$(normalize_gambio_version "$1") version_a=$(normalize_gambio_version "$1")
version_b=$(normalize_gambio_version "$2") version_b=$(normalize_gambio_version "$2")
IFS='.' read -r a_major a_minor a_patch <<< "$version_a" if [ -z "$version_a" ] || [ -z "$version_b" ]; then
IFS='.' read -r b_major b_minor b_patch <<< "$version_b" echo 0
return 1
fi
a_major=${a_major:-0} read -ra a_parts <<< "$version_a"
a_minor=${a_minor:-0} read -ra b_parts <<< "$version_b"
a_patch=${a_patch:-0}
b_major=${b_major:-0}
b_minor=${b_minor:-0}
b_patch=${b_patch:-0}
a_major=$((10#$a_major)) if [ "${#a_parts[@]}" -gt "${#b_parts[@]}" ]; then
a_minor=$((10#$a_minor)) max_parts="${#a_parts[@]}"
a_patch=$((10#$a_patch)) else
b_major=$((10#$b_major)) max_parts="${#b_parts[@]}"
b_minor=$((10#$b_minor)) fi
b_patch=$((10#$b_patch))
if [ "$a_major" -gt "$b_major" ]; then for ((i = 0; i < max_parts; i++)); do
a_part="${a_parts[$i]:-0}"
b_part="${b_parts[$i]:-0}"
a_part=$((10#$a_part))
b_part=$((10#$b_part))
if [ "$a_part" -gt "$b_part" ]; then
echo 1 echo 1
return 0 return 0
elif [ "$a_major" -lt "$b_major" ]; then elif [ "$a_part" -lt "$b_part" ]; then
echo -1
return 0
fi
if [ "$a_minor" -gt "$b_minor" ]; then
echo 1
return 0
elif [ "$a_minor" -lt "$b_minor" ]; then
echo -1
return 0
fi
if [ "$a_patch" -gt "$b_patch" ]; then
echo 1
return 0
elif [ "$a_patch" -lt "$b_patch" ]; then
echo -1 echo -1
return 0 return 0
fi fi
done
echo 0 echo 0
} }