summaryrefslogtreecommitdiff
path: root/kludges.py
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2021-07-10 23:26:20 +0000
committerRob Austein <sra@hactrn.net>2021-07-10 23:26:20 +0000
commitbfebab9957c63d460874d3ec8f6100f9b49de080 (patch)
treef0e5a33da5aa880351065b1e9d227be3f36d4349 /kludges.py
parent019a6cd5cfa533b53346d0c38f939198f214667d (diff)
Whack some URLs to match cgit naming scheme
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)