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