mirror of
https://gitlab.com/lvra/lvra.gitlab.io.git
synced 2024-11-10 02:20:26 +01:00
34 lines
741 B
Python
34 lines
741 B
Python
|
#!/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)
|