Vierstellige Gambio-Versionsnummern ermöglichen
This commit is contained in:
+29
-39
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user