mirror of
https://gitlab.com/lvra/lvra.gitlab.io.git
synced 2025-05-05 21:45:31 +02:00
feat: test if local links exist in ci
This commit is contained in:
parent
605b0fb291
commit
10227b959f
2 changed files with 41 additions and 3 deletions
33
test_links.py
Normal file
33
test_links.py
Normal file
|
@ -0,0 +1,33 @@
|
|||
#!/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)
|
Loading…
Add table
Add a link
Reference in a new issue