Fix for GitHub releases API not returning all assets when querying the assets URL due to pagination
Use the assets list from the release result when available as it is not paginated. Otherwise request 64 items per page which is more than enough for our 30 odd assets
This commit is contained in:
parent
eb6d777790
commit
6d73306198
16
publish.py
16
publish.py
@ -262,6 +262,7 @@ class GitHub: # {{{
|
||||
'Authorization': self.auth,
|
||||
'Accept': 'application/vnd.github+json',
|
||||
'User-Agent': 'kitty',
|
||||
'X-GitHub-Api-Version': '2022-11-28',
|
||||
}
|
||||
if params:
|
||||
url += '?' + urlencode(params)
|
||||
@ -335,11 +336,11 @@ class GitHub: # {{{
|
||||
# self.clean_older_releases(releases)
|
||||
release = self.create_release()
|
||||
upload_url = release['upload_url'].partition('{')[0]
|
||||
asset_url = f'{self.url_base}/assets/{{}}'
|
||||
existing_assets = self.existing_assets(release['id'])
|
||||
existing_assets = self.existing_assets(release)
|
||||
|
||||
def delete_asset(asset_id: str) -> None:
|
||||
self.delete_asset(asset_url.format(asset_id), fname)
|
||||
asset_url = release['assets_url'] + f'/{asset_id}'
|
||||
self.delete_asset(asset_url, fname)
|
||||
|
||||
def upload_with_retries(path: str, desc: str, num_tries: int = 8, sleep_time: float = 60.0) -> None:
|
||||
fname = os.path.basename(path)
|
||||
@ -399,9 +400,12 @@ class GitHub: # {{{
|
||||
self.print_failed_response_details(r, msg)
|
||||
raise SystemExit(1)
|
||||
|
||||
def existing_assets(self, release_id: str) -> Dict[str, str]:
|
||||
url = f'{self.url_base}/{release_id}/assets'
|
||||
d = self.make_request_with_retries(url, failure_msg='Failed to get assets for release', return_data=True)
|
||||
def existing_assets(self, release: Dict[str, Any]) -> Dict[str, str]:
|
||||
if 'assets' in release:
|
||||
d = release['assets']
|
||||
else:
|
||||
d = self.make_request_with_retries(
|
||||
release['assets_url'], params={'per_page': '64'}, failure_msg='Failed to get assets for release', return_data=True)
|
||||
return {asset['name']: asset['id'] for asset in d}
|
||||
|
||||
def create_release(self) -> Dict[str, Any]:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user