summaryrefslogtreecommitdiff
path: root/kludge-cgit-urls.py
diff options
context:
space:
mode:
Diffstat (limited to 'kludge-cgit-urls.py')
-rwxr-xr-xkludge-cgit-urls.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/kludge-cgit-urls.py b/kludge-cgit-urls.py
new file mode 100755
index 0000000..9d9feed
--- /dev/null
+++ b/kludge-cgit-urls.py
@@ -0,0 +1,39 @@
+#!/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)