From 310322d01f89c158020809245261afe02fa80fb1 Mon Sep 17 00:00:00 2001 From: limiting-factor Date: Sat, 22 Feb 2025 16:26:24 +0000 Subject: [PATCH] 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 Co-authored-by: limiting-factor Co-committed-by: limiting-factor --- lib/lib.sh | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/lib.sh b/lib/lib.sh index 3a4cec81..96650b89 100644 --- a/lib/lib.sh +++ b/lib/lib.sh @@ -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