feat: test if local links exist in ci

This commit is contained in:
GabMus 2023-12-22 09:16:24 +00:00
parent 605b0fb291
commit 10227b959f
2 changed files with 41 additions and 3 deletions

View file

@ -1,15 +1,20 @@
image: registry.gitlab.com/pages/hugo/hugo_extended
variables: variables:
GIT_SUBMODULE_STRATEGY: recursive GIT_SUBMODULE_STRATEGY: recursive
test: test-links:
image: python:latest
script:
- python3 ./test_links.py
test-build:
image: registry.gitlab.com/pages/hugo/hugo_extended
script: script:
- hugo - hugo
except: except:
- main - main
pages: pages:
image: registry.gitlab.com/pages/hugo/hugo_extended
script: script:
- hugo - hugo
artifacts: artifacts:

33
test_links.py Normal file
View 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)