예제 #1
0
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
예제 #2
0
 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]
예제 #3
0
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