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("") @@ -104,10 +120,10 @@ with open("wiki/Modlist.md", "w") as f: f.write("\r\n") f.write("\r\n
") -with open("wiki/Licenses.md", "w") as f: +with fragile(open("wiki/Licenses.md", "w")) as f: if (count["server"] + count["client"] + count["both"]) == 0: f.write("## No mods.") - break + raise fragile.Break for mod in mods: data = mods[mod] diff --git a/.forgejo/workflows/restart-server.yaml b/.forgejo/workflows/restart-server.yaml new file mode 100644 index 0000000..5e24167 --- /dev/null +++ b/.forgejo/workflows/restart-server.yaml @@ -0,0 +1,8 @@ +name: "Update wiki" +on: [push] +jobs: + restart: + if: "contains(github.event.head_commit.message, '[restart]')" + name: "Restart server" + runs-on: ubuntu-latest + steps: