Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 19 additions & 1 deletion arcup/arcup
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ set -euo pipefail

# NOTE: if you make modifications to this script, please increment the version number.
# WARNING: the SemVer pattern: major.minor.patch must be followed as we use it to determine if the script is up to date.
ARCUP_INSTALLER_VERSION="0.2.0"
ARCUP_INSTALLER_VERSION="0.2.1"

REPO="${ARC_REPO:-circlefin/arc-node}"
if [[ -n "${ARC_REPO:-}" ]] && [[ ! "$ARC_REPO" =~ ^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$ ]]; then
Expand Down Expand Up @@ -264,6 +264,17 @@ version_gt() {
# Remove 'v' prefix if present
local ver1="${1#v}"
local ver2="${2#v}"

# Keep the pre-release tags aside: SemVer orders a release above any
# pre-release of the same major.minor.patch.
local pre1="" pre2=""
if [[ "$ver1" == *-* ]]; then
pre1="${ver1#*-}"
fi
if [[ "$ver2" == *-* ]]; then
pre2="${ver2#*-}"
fi

ver1="${ver1%%-*}"
ver2="${ver2%%-*}"

Expand All @@ -281,6 +292,13 @@ EOF
[ "$patch1" -gt "$patch2" ] && return 0
[ "$patch1" -lt "$patch2" ] && return 1

# Same major.minor.patch. A release outranks a pre-release of it, so
# 0.3.0 is newer than 0.3.0-rc.1. Two pre-releases of the same version
# are not ordered here; no caller compares them.
if [ -z "$pre1" ] && [ -n "$pre2" ]; then
return 0
fi

return 1
}

Expand Down
10 changes: 10 additions & 0 deletions arcup/test_arcup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,16 @@ test_version_comparison() {
fail "same prerelease base is not newer"
fi
pass "same prerelease base is not newer"

if ! version_gt "0.3.0" "0.3.0-rc.1"; then
fail "release is newer than its prerelease"
fi
pass "release is newer than its prerelease"

if ! version_gt "v0.3.0" "v0.3.0-rc.2"; then
fail "release is newer than its prerelease with v prefix"
fi
pass "release is newer than its prerelease with v prefix"
}

test_target_mapping() {
Expand Down