]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Tidy up build-scripts/check-debian-autoremovals.py 12117/head
authorChris Hofstaedtler <chris.hofstaedtler@deduktiva.com>
Sat, 22 Oct 2022 13:17:01 +0000 (15:17 +0200)
committerChris Hofstaedtler <chris.hofstaedtler@deduktiva.com>
Sat, 22 Oct 2022 13:25:44 +0000 (15:25 +0200)
Apply black; apply flake8 hints (with line-length 120).
Avoid printing message multiple times; split into function blocks.

build-scripts/check-debian-autoremovals.py

index 583c4fd7d9cf242708b3525764f19e774944c268..0249ecff3309d12737395f4449f73fde80c81e12 100755 (executable)
@@ -1,15 +1,20 @@
 #!/usr/bin/python3
-import yaml
-import requests
-import sys
 import re
+import sys
+
+import requests
+import yaml
+
+
+PACKAGE_NAMES = ["pdns", "pdns-recursor", "dnsdist"]
 
-def getTitleForBugs(bugs):
+
+def get_bugs_titles(bugs):
     ret = []
-    title_regex = re.compile(r'<title>(.*) - Debian Bug report logs</title>')
+    title_regex = re.compile(r"<title>(.*) - Debian Bug report logs</title>")
     for bug in bugs:
-        bug_r = requests.get('https://bugs.debian.org/cgi-bin/bugreport.cgi', params={'bug':bug})
-        lines = bug_r.text.split('\n')
+        bug_r = requests.get("https://bugs.debian.org/cgi-bin/bugreport.cgi", params={"bug": bug})
+        lines = bug_r.text.split("\n")
         for line in lines:
             match = title_regex.search(line)
             if match:
@@ -18,40 +23,50 @@ def getTitleForBugs(bugs):
     return ret
 
 
-r = requests.get('https://udd.debian.org/cgi-bin/autoremovals.yaml.cgi')
-data = yaml.load(r.text, Loader=yaml.SafeLoader)
-msg = ''
+def get_all_autoremovals():
+    r = requests.get("https://udd.debian.org/cgi-bin/autoremovals.yaml.cgi")
+    return yaml.load(r.text, Loader=yaml.SafeLoader)
 
-keys = ['pdns', 'pdns-recursor', 'dnsdist']
 
-removals = []
+def warn_removal(all_autoremovals, package_name):
+    removal = all_autoremovals.get(package_name)
+    if not removal:
+        return False
 
-for key in keys:
-    if not key in data.keys():
-        continue
-    removals.append(key)
-    msg += "::warning ::%s slated for removal from Debian on %s (https://tracker.debian.org/pkg/%s) " % (key, data[key]['removal_date'], key)
-    if data[key]['dependencies_only']:
-        msg += "because there are bugged dependencies.\n\n"
-    else:
-        msg += "because of a bug in PowerDNS!\n\n"
+    reason = "there are bugged dependencies." if removal["dependencies_only"] else "of a bug in PowerDNS!"
+    msg = (
+        f"::warning ::{package_name} slated for removal from Debian on "
+        f"{removal['removal_date']} (https://tracker.debian.org/pkg/{package_name}) "
+        f"because {reason}\n\n"
+    )
 
-    bugs = getTitleForBugs(data[key].get('bugs_dependencies', []))
+    bugs = get_bugs_titles(removal.get("bugs_dependencies", []))
     if len(bugs):
-        msg += "This is caused by the following dependency bug%s:\n  " % ('s' if len(bugs) > 1 else '')
-        msg += '\n  '.join(bugs)
+        msg += f"This is caused by the following dependency bug{'s' if len(bugs) > 1 else ''}:\n  "
+        msg += ("\n  ".join(bugs)) + "\n"
 
-    bugs = getTitleForBugs(data[key]['bugs'])
+    bugs = get_bugs_titles(removal["bugs"])
     if len(bugs):
-        msg += "This is caused by the following bug%s in PowerDNS:\n  " % ('s' if len(bugs) > 1 else '')
-        msg += '\n  '.join(bugs)
-
-    msg += "\n"
+        msg += f"This is caused by the following bug{'s' if len(bugs) > 1 else ''} in PowerDNS:\n  "
+        msg += ("\n  ".join(bugs)) + "\n"
 
     print(msg)
+    return True
+
+
+def main():
+    all_autoremovals = get_all_autoremovals()
+    removals = []
+    for package_name in PACKAGE_NAMES:
+        if warn_removal(all_autoremovals, package_name):
+            removals.append(package_name)
+
+    if removals:
+        sys.exit(1)
+    else:
+        print("::notice ::No packages marked for autoremoval from Debian (yay!)")
+        sys.exit(0)
+
 
-if removals:
-    sys.exit(1)
-else:
-    print("::notice ::No packages marked for autoremoval from Debian (yay!)")
-    sys.exit(0)
+if __name__ == "__main__":
+    main()