#!/usr/bin/env python3 # # Kludges specific to converting the Cryptech wiki import os, re, json with open("repositories.json") as f: repo_or = "|".join(os.path.splitext(r)[0] for r in json.load(f)) plain = "](https://git.cryptech.is" export = "](export:/" regexp = re.compile(r"(\(https://git\.cryptech\.is/(?:" + repo_or + "))([(/)])") for root, dirs, files in os.walk("pelican/content"): for fn in files: if not fn.endswith(".md"): continue fn = os.path.join(root, fn) with open(fn) as f: lines = f.readlines() if not any(plain in line or export in line for line in lines): continue changes = 0 for i, line in enumerate(lines): if export in line: changes = 1 line = line.replace(export, "](https://git.cryptech.is/") elif plain not in line: continue lines[i], n = regexp.subn( lambda m: m.group(1) + ("/tree" if m.group(2) == "/" else "/about") + m.group(2), line) changes += n if changes: tn = fn + ".tmp" with open(tn, "w") as f: for line in lines: f.write(line) os.rename(tn, fn)