Skip to content

Commit 727f085

Browse files
committed
[sources/github] Fetch first 5 release catalog pages (100 entries/page)
Ensures that Dortania build repo releases are not truncated too early.
1 parent 0d452e7 commit 727f085

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

ocebuild/sources/github.py

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -144,17 +144,24 @@ def github_release_catalog(url: str) -> dict:
144144
Returns:
145145
Release catalog.
146146
"""
147-
try:
148-
base_url, tag = url.replace('https://github.com', '/repos').split('/tag/')
149-
release_catalog = github_api_request(base_url + '?per_page=100').json()
150-
release_entry = next(e for e in release_catalog if e['tag_name'] == tag)
151-
if not release_entry:
152-
raise ValueError(f'No release catalog entry found for {tag}.')
153-
return release_entry
154-
except StopIteration:
155-
raise ValueError(f'No release catalog entry found in {url} for {tag}.')
156-
except:
157-
if not github_rate_limit(raise_error=True): raise
147+
page = 1
148+
page_retries = 5
149+
while (page_retries > 0):
150+
try:
151+
base_url, tag = url.replace('https://github.com', '/repos').split('/tag/')
152+
release_catalog = github_api_request(base_url + f'?per_page=100&page={page}').json()
153+
release_entry = next(e for e in release_catalog if e['tag_name'] == tag)
154+
if not release_entry:
155+
raise ValueError(f'No release catalog entry found for {tag}.')
156+
return release_entry
157+
except StopIteration:
158+
page += 1
159+
if not page_retries:
160+
raise ValueError(f'No release catalog entry found in {url} for {tag}.')
161+
else:
162+
page_retries -= 1
163+
except:
164+
if not github_rate_limit(raise_error=True): raise
158165

159166
################################################################################
160167
# URL formatting/retrieval functions #

0 commit comments

Comments
 (0)