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