blob: 4867fed4d4ea78a462f35be25632bb6b046bcf9c (
plain) (
tree)
|
|
#!/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:/"
browser = "https://trac.cryptech.is/browser/"
gitrepositories = "GitRepositories/"
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(any(pattern in line for pattern in (plain, export, browser, gitrepositories))
for line in lines):
continue
changes = 0
for i, line in enumerate(lines):
if browser in line:
changes = 1
line = line.replace(browser, "https://git.cryptech.is/")
elif gitrepositories in line:
changes = 1
line = line \
.replace("[GitRepositories/", "[") \
.replace("(GitRepositories/", "(https://git.cryptech.is/") \
.replace("({filename}GitRepositories/", "(https://git.cryptech.is/")
elif 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)
|