#!/usr/bin/python3
-import itertools
+import datetime
+import pathlib
import shlex
import subprocess
+import sys
def _(*args):
print(shlex.join(args))
_("rpm", "--rebuilddb")
_("dnf", "clean", "all")
-def update_disabled(repos):
- args = ["dnf", "update", "-y"] + list(itertools.chain(*[("--disablerepo", r) for r in repos]))
- _(*args)
+def update_enabled(repo):
+ clean()
+ _("dnf", "update", "-y", "--disablerepo=*", "--enablerepo", repo)
-def update_enabled(repos):
- args = ["dnf", "update", "-y", "--disablerepo=*"] + list(itertools.chain(*[("--enablerepo", r) for r in repos]))
- _(*args)
-
-clean()
-
-problematic_repos = ["copr:copr.fedorainfracloud.org:mlampe:emacs-30", "okay", "extras"]
-
-update_disabled(problematic_repos)
+repolist = subprocess.run(["dnf", "repolist"], check=True, stdout=subprocess.PIPE, text=True).stdout
+repos = [lps[0] for lps in map(str.split, repolist.splitlines()[1:])]
failed = []
-for r in problematic_repos:
+for r in repos:
try:
- update_enabled([r])
+ update_enabled(r)
except Exception as e:
failed.append(r)
print(f"fail {r}: {e}")
-print(f"failed {failed}")
+if not failed:
+ sys.exit(0)
+
+failed_path = pathlib.Path("failed")
+
+existing_failed = failed_path.read_text() if failed_path.exists() else ""
+
+for f in failed:
+ existing_failed += f"{f} {datetime.date.today()}\n"
+
+failed_path.write_text(existing_failed)
+
+print(f"failed {failed}, wrote to {failed_path}")