From c947fed756dd0cbc12d1db4e9af96f8792ba37ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Pi=C3=A9dallu?= Date: Sat, 9 Mar 2024 14:26:47 +0100 Subject: [PATCH] find_deprecated: better handling of exceptions --- tools/find_deprecated.py | 59 ++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/tools/find_deprecated.py b/tools/find_deprecated.py index b81cd038dc..17f9cb1166 100755 --- a/tools/find_deprecated.py +++ b/tools/find_deprecated.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 +import traceback import argparse import tomlkit import multiprocessing @@ -57,32 +58,36 @@ def upstream_last_update_ago(app: str) -> tuple[str, int | None]: raise RuntimeError(f"App {app} doesn't have an upstream code link!") api = None - if upstream.startswith("https://github.com/"): - api = GithubAPI(upstream, auth=get_github()[0]) - - if upstream.startswith("https://gitlab."): - api = GitlabAPI(upstream) - - if upstream.startswith("https://codeberg.org") or upstream.startswith("https://framagit.org"): - api = GiteaForgejoAPI(upstream) - - if not api: - autoupdate = manifest.get("resources", {}).get("sources", {}).get("main", {}).get("autoupdate") - if autoupdate: - strat = autoupdate["strategy"] - if "gitea" in strat or "forgejo" in strat: - api = GiteaForgejoAPI(upstream) - - if api: - if api.archived(): - # A stupid value that we know to be higher than the trigger value - return app, 1000 - - last_commit = api.commits()[0] - date = last_commit["commit"]["author"]["date"] - date = datetime.datetime.fromisoformat(date) - ago: datetime.timedelta = datetime.datetime.now() - date.replace(tzinfo=None) - return app, ago.days + try: + if upstream.startswith("https://github.com/"): + api = GithubAPI(upstream, auth=get_github()[0]) + + if upstream.startswith("https://gitlab."): + api = GitlabAPI(upstream) + + if upstream.startswith("https://codeberg.org") or upstream.startswith("https://framagit.org"): + api = GiteaForgejoAPI(upstream) + + if not api: + autoupdate = manifest.get("resources", {}).get("sources", {}).get("main", {}).get("autoupdate") + if autoupdate: + strat = autoupdate["strategy"] + if "gitea" in strat or "forgejo" in strat: + api = GiteaForgejoAPI(upstream) + + if api: + if api.archived(): + # A stupid value that we know to be higher than the trigger value + return app, 1000 + + last_commit = api.commits()[0] + date = last_commit["commit"]["author"]["date"] + date = datetime.datetime.fromisoformat(date) + ago: datetime.timedelta = datetime.datetime.now() - date.replace(tzinfo=None) + return app, ago.days + except Exception: + logging.error(f"Exception while handling {app}", traceback.format_exc()) + raise raise RuntimeError(f"App {app} not handled (not github, gitlab or gitea with autoupdate). Upstream is {upstream}") @@ -108,7 +113,7 @@ def main() -> None: try: app, result = next(tasks) except Exception as e: - print(e) + print(f"Exception found: {e}") continue if result is None: