msys2-autobuild/msys2_autobuild/cmd_clear_failed.py
Befator 50276fb9a2
Some checks failed
test / test (ubuntu-24.04, 3.12) (push) Has been cancelled
test / test (ubuntu-24.04, 3.13) (push) Has been cancelled
test / test (windows-11-arm, 3.12) (push) Has been cancelled
test / test (windows-11-arm, 3.13) (push) Has been cancelled
test / test (windows-2022, 3.12) (push) Has been cancelled
test / test (windows-2022, 3.13) (push) Has been cancelled
test / zizmor (push) Has been cancelled
build / schedule (push) Has been cancelled
build / ${{ matrix.name }} (push) Has been cancelled
More fixes
2025-10-18 19:19:29 +02:00

50 lines
2.1 KiB
Python

from typing import Any
from .gh import (get_asset_filename, get_current_repo, get_release,
get_release_assets, get_gitea)
from .queue import get_buildqueue_with_status
def clear_failed_state(args: Any) -> None:
build_type_filter = args.build_types
build_type_list = build_type_filter.replace(" ", "").split(",") if build_type_filter else []
package_filter = args.packages
package_list = package_filter.replace(" ", "").split(",") if package_filter else []
if build_type_filter is None and package_filter is None:
raise SystemExit("clear-failed: At least one of --build-types or --packages needs to be passed")
repo = get_current_repo()
release = get_release(repo, 'staging-failed')
assets_failed = get_release_assets(release)
failed_map = dict((get_asset_filename(a), a) for a in assets_failed)
for pkg in get_buildqueue_with_status():
if package_filter is not None and pkg["name"] not in package_list:
continue
for build_type in pkg.get_build_types():
if build_type_filter is not None and build_type not in build_type_list:
continue
name = pkg.get_failed_name(build_type)
if name in failed_map:
asset = failed_map[name]
print(f"Deleting {get_asset_filename(asset)}...")
if not args.dry_run:
gitea = get_gitea()
gitea.repo_delete_release_attachment(repo.owner.login, repo.name, release.id, asset.id)
def add_parser(subparsers: Any) -> None:
sub = subparsers.add_parser(
"clear-failed", help="Clear the failed state for packages", allow_abbrev=False)
sub.add_argument(
"--dry-run", action="store_true", help="Only show what is going to be deleted")
sub.add_argument("--build-types", action="store", help=(
"A comma separated list of build types (e.g. mingw64)"))
sub.add_argument("--packages", action="store", help=(
"A comma separated list of packages to clear (e.g. mingw-w64-qt-creator)"))
sub.set_defaults(func=clear_failed_state)