def get_assets_to_delete(repo: Repository) -> List[GitReleaseAsset]: print("Fetching packages to build...") patterns = [] for pkg in get_buildqueue(): patterns.append(f"{pkg['name']}-{pkg['version']}.src.tar.*") patterns.append(f"{pkg['name']}-{pkg['version']}.failed") for items in pkg['packages'].values(): for item in items: patterns.append(f"{item}-{pkg['version']}-*.pkg.tar.*") patterns.append(f"{item}-{pkg['version']}.failed") print("Fetching assets...") assets: Dict[str, List[GitReleaseAsset]] = {} for release_name in ['staging-msys', 'staging-mingw', 'staging-failed']: release = repo.get_release(release_name) for asset in get_release_assets(release, include_incomplete=True): assets.setdefault(get_asset_filename(asset), []).append(asset) for pattern in patterns: for key in fnmatch.filter(assets.keys(), pattern): del assets[key] result = [] for items in assets.values(): for asset in items: result.append(asset) return result
def get_cached_assets( repo: Repository, release_name: str, *, _cache={}) -> List[GitReleaseAsset]: key = (repo.full_name, release_name) if key not in _cache: release = repo.get_release(release_name) _cache[key] = get_release_assets(release) return _cache[key]
def create_empty_release(repo: Repo, text_id: str): try: release = repo.get_release(text_id) except UnknownObjectException: pass else: release.delete_release() finally: release = repo.create_git_release(text_id, text_id, f"{text_id} release") return release