From 5826ff6e2ff8d6e14351a0415a3a67350ce9c440 Mon Sep 17 00:00:00 2001 From: Chris Hofstaedtler Date: Sat, 22 Oct 2022 15:17:01 +0200 Subject: [PATCH] Tidy up build-scripts/check-debian-autoremovals.py Apply black; apply flake8 hints (with line-length 120). Avoid printing message multiple times; split into function blocks. --- build-scripts/check-debian-autoremovals.py | 83 +++++++++++++--------- 1 file changed, 49 insertions(+), 34 deletions(-) diff --git a/build-scripts/check-debian-autoremovals.py b/build-scripts/check-debian-autoremovals.py index 583c4fd7d9..0249ecff33 100755 --- a/build-scripts/check-debian-autoremovals.py +++ b/build-scripts/check-debian-autoremovals.py @@ -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'(.*) - Debian Bug report logs') + title_regex = re.compile(r"(.*) - Debian Bug report logs") 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() -- 2.47.2