diff --git a/.forgejo/scripts/update-wiki.py b/.forgejo/scripts/update-wiki.py index f82ad34..16ffa5e 100644 --- a/.forgejo/scripts/update-wiki.py +++ b/.forgejo/scripts/update-wiki.py @@ -14,6 +14,22 @@ count["both"] = 0 cache = dict() +class fragile(object): + class Break(Exception): + """Break out of the with statement""" + + def __init__(self, value): + self.value = value + + def __enter__(self): + return self.value.__enter__() + + def __exit__(self, etype, value, traceback): + error = self.value.__exit__(etype, value, traceback) + if etype == self.Break: + return True + return error + if os.path.isfile("cache/licenses.json"): with open("cache/licenses.json", "r") as f: cache = json.load(f) @@ -47,10 +63,10 @@ for mod in glob.glob("pack/mods/*.toml"): count[moddata["side"]] += 1 mods[moddata["name"]] = moddata -with open("wiki/Modlist.md", "w") as f: +with fragile(open("wiki/Modlist.md", "w")) as f: if (count["server"] + count["client"] + count["both"]) == 0: f.write("## No mods.") - break + raise fragile.Break f.write("## Total Count\r\n") f.write("