Skip to content

Commit 8a23f62

Browse files
committed
Update release script to treat stable versions as higher than beta versions
1 parent 8bed880 commit 8a23f62

File tree

1 file changed

+23
-10
lines changed

1 file changed

+23
-10
lines changed

scripts/release.sh

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -105,18 +105,31 @@ compare_versions() {
105105
local version1=$1
106106
local version2=$2
107107

108-
# Remove prerelease parts for comparison
109-
local v1_stable=$(echo "$version1" | sed -E 's/(-.*)?$//')
110-
local v2_stable=$(echo "$version2" | sed -E 's/(-.*)?$//')
111-
112-
if [[ "$v1_stable" == "$v2_stable" ]]; then
113-
echo 0
114-
return
108+
local v1_base=${version1%%-*}
109+
local v2_base=${version2%%-*}
110+
local v1_pre=""
111+
local v2_pre=""
112+
113+
[[ "$version1" == *-* ]] && v1_pre=${version1#*-}
114+
[[ "$version2" == *-* ]] && v2_pre=${version2#*-}
115+
116+
# When base versions match, a stable release outranks any prerelease
117+
if [[ "$v1_base" == "$v2_base" ]]; then
118+
if [[ -z "$v1_pre" && -n "$v2_pre" ]]; then
119+
echo 1
120+
return
121+
elif [[ -n "$v1_pre" && -z "$v2_pre" ]]; then
122+
echo -1
123+
return
124+
elif [[ "$version1" == "$version2" ]]; then
125+
echo 0
126+
return
127+
fi
115128
fi
116129

117-
# Use sort -V to compare versions
118-
local sorted=$(printf "%s\n%s" "$v1_stable" "$v2_stable" | sort -V)
119-
if [[ "$(echo "$sorted" | head -1)" == "$v1_stable" ]]; then
130+
# Fallback to version sort for differing bases or two prereleases
131+
local sorted=$(printf "%s\n%s" "$version1" "$version2" | sort -V)
132+
if [[ "$(echo "$sorted" | head -1)" == "$version1" ]]; then
120133
echo -1
121134
else
122135
echo 1

0 commit comments

Comments
 (0)