diff options
Diffstat (limited to 'kludges.py')
-rwxr-xr-x | kludges.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/kludges.py b/kludges.py new file mode 100755 index 0000000..c0de7e1 --- /dev/null +++ b/kludges.py @@ -0,0 +1,36 @@ +#!/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" + +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 for line in lines): + continue + changes = 0 + for i, line in enumerate(lines): + if plain not in line: + continue + lines[i], n = regexp.subn( + lambda m: m.group(1) + (".git/tree" if m.group(2) == "/" else ".git") + 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) |