Purpose:
Retrieve greatest semantic version from any Github releases page.
curl(7.88.1)jq(1.6)- ℹ️ Releases MUST follow Semantic Versioning 2.0.0
Full jq selector with comments.
curl -sSf "$RELEASE_URL" \
| jq -r '
[.[].tag_name
| select (contains("-") | not) # no pre-release
| select (contains("+") | not) # no builds
]
|sort_by(
# "Build metadata MUST be ignored when determining version precedence"
# https://semver.org/#spec-item-10
split("+")[0]
# split core cersion from pre-release
# https://semver.org/#spec-item-9
|split("-")
# split core version to major minor patch and do type conversion
|(.[0]|split(".")|map(tonumber? // .)) as $version_core
# recombine pre-release part
|(.[1:]|join("-")
# "Precedence [..] MUST be determined by comparing each dot separated identifier"
# https://semver.org/#spec-item-11 (4)
|split(".")|map(tonumber? // .)
) as $pre_release
# sort by version core
|$version_core,
# "a pre-release version has lower precedence than a normal version"
# https://semver.org/#spec-item-11 (3)
($pre_release|length)==0,
# sort by pre-release
$pre_release
)
# Latest is greatest
| last'💡Condensed variant without comments; querying the latest version of Joomla Content Management System
RELEASE_URL=https://api.github.com/repos/joomla/joomla-cms/releases
curl -sSf "${RELEASE_URL}" |jq -r '
[.[].tag_name|select (contains("-")|not)|select(contains("+")|not)]
|sort_by(split("+")[0]|split("-")
|(.[0]|split(".")|map(tonumber? // .)) as $version_core
|(.[1:]|join("-")|split(".")|map(tonumber? // .)) as $pre_release
|$version_core,($pre_release|length)==0,$pre_release)|last'Result: (Thu Sep 11 2025)
5.3.3