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" \
| sed -E 's/^v//' \
| sed -E 's/[^0-9.].*$//'
| grep -oE '^[0-9]+(\.[0-9]+)*'
}
compare_gambio_versions()
{
local version_a
local version_b
local a_major
local a_minor
local a_patch
local b_major
local b_minor
local b_patch
local IFS='.'
local a_parts
local b_parts
local max_parts
local i
local a_part
local b_part
version_a=$(normalize_gambio_version "$1")
version_b=$(normalize_gambio_version "$2")
IFS='.' read -r a_major a_minor a_patch <<< "$version_a"
IFS='.' read -r b_major b_minor b_patch <<< "$version_b"
if [ -z "$version_a" ] || [ -z "$version_b" ]; then
echo 0
return 1
fi
a_major=${a_major:-0}
a_minor=${a_minor:-0}
a_patch=${a_patch:-0}
b_major=${b_major:-0}
b_minor=${b_minor:-0}
b_patch=${b_patch:-0}
read -ra a_parts <<< "$version_a"
read -ra b_parts <<< "$version_b"
a_major=$((10#$a_major))
a_minor=$((10#$a_minor))
a_patch=$((10#$a_patch))
b_major=$((10#$b_major))
b_minor=$((10#$b_minor))
b_patch=$((10#$b_patch))
if [ "${#a_parts[@]}" -gt "${#b_parts[@]}" ]; then
max_parts="${#a_parts[@]}"
else
max_parts="${#b_parts[@]}"
fi
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
return 0
elif [ "$a_major" -lt "$b_major" ]; 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
elif [ "$a_part" -lt "$b_part" ]; then
echo -1
return 0
fi
done
echo 0
}