lvra.gitlab.io/test_links.py

34 lines
741 B
Python
Raw Normal View History

2023-12-22 10:16:24 +01:00
#!/usr/bin/env python3
from pathlib import Path
import re
from typing import List
from os.path import exists
def get_all_markdown_files():
return Path("content").rglob("*.md")
def find_links(f: str) -> List[str]:
with open(f, "r") as fd:
content = fd.read()
return [
link.lstrip("]").strip("()") for link in re.findall(r"\]\(\/[\w\/]+\)", content)
]
def verify_link_exists(link: str) -> bool:
return exists(f"content{link}/_index.md") or exists(f'content{link.rstrip("/")}.md')
md_files = get_all_markdown_files()
res = 0
for f in md_files:
for link in find_links(f):
if not verify_link_exists(link):
print(f"E: {f}: {link} does not exist")
res = 1
exit(res)