fix: lib: get all releases (#544)

Loop over all pages instead of getting the first one only to not miss any version.

Reviewed-on: https://code.forgejo.org/forgejo/end-to-end/pulls/544
Reviewed-by: earl-warren <earl-warren@noreply.code.forgejo.org>
Co-authored-by: limiting-factor <limiting-factor@posteo.com>
Co-committed-by: limiting-factor <limiting-factor@posteo.com>
This commit is contained in:
limiting-factor 2025-02-22 16:26:24 +00:00 committed by earl-warren
parent 6f6466b3f6
commit 310322d01f
No known key found for this signature in database
GPG key ID: F128CBE6AB3A7201

View file

@ -89,12 +89,25 @@ function retry() {
fi
}
function get_versions() {
local releases=$1
local page=1
while true; do
curl --fail -sS "$releases?limit=100&page=$page" | jq -r '.[] | .tag_name' >/tmp/page
cat /tmp/page
if ! test -s /tmp/page; then
break
fi
page=$(expr $page + 1)
done | grep -v -e '-rc' | sort --version-sort
}
function full_version() {
local version=$1
local owner=$2
if [[ $version =~ ^[0-9]+\.[0-9]+$ ]]; then
full_version=$(curl -sS "$FORGEJO_INSTANCE/api/v1/repos/$owner/forgejo/releases?limit=50" | jq -r '.[] | .tag_name | select(startswith("v'$version'"))' | sort --reverse --version-sort | head -1)
full_version=$(get_versions "$FORGEJO_INSTANCE/api/v1/repos/$owner/forgejo/releases" | sed -n -e "/^v$version/p" | sort --reverse --version-sort | head -1)
echo ${full_version#v}
else
echo $version