aboutsummaryrefslogtreecommitdiff
path: root/kludges.py
diff options
context:
space:
mode:
Diffstat (limited to 'kludges.py')
-rwxr-xr-xkludges.py36
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)