65 lines
1.9 KiB
Python
Executable File
65 lines
1.9 KiB
Python
Executable File
#!/usr/bin/python3
|
|
|
|
"""
|
|
Checks that all documentation pages that should be mentioned in
|
|
`docs/SUMMARY.md` are mentioned the file
|
|
"""
|
|
|
|
import glob
|
|
import re
|
|
import os
|
|
from pathlib import Path
|
|
|
|
errorLines = []
|
|
|
|
if not os.path.exists("Makefile"):
|
|
errorLines.append("Please run this script from your root folder.")
|
|
|
|
summaryFile = Path("docs/SUMMARY.md")
|
|
if not errorLines:
|
|
if not summaryFile.is_file():
|
|
errorLines.append("docs/SUMMARY.md missing")
|
|
|
|
summaryContents = []
|
|
if not errorLines:
|
|
with open(summaryFile, 'r', encoding='UTF-8') as file:
|
|
entry_pattern = re.compile(r" *\- \[[^\]]*\]\(([^\)]*)\)\n")
|
|
lineNo = 0
|
|
while line:=file.readline():
|
|
lineNo = lineNo + 1
|
|
if line == "# Summary\n" or line == "\n":
|
|
pass
|
|
elif match:=entry_pattern.match(line):
|
|
if "" != match.group(1):
|
|
summaryContents.append(Path(match.group(1)))
|
|
else:
|
|
if not errorLines:
|
|
errorLines.append("## Unexpected lines in docs/SUMMARY.md")
|
|
errorLines.append(f"- {lineNo}: {line.strip()}")
|
|
|
|
if not errorLines:
|
|
for pathName in glob.glob("**/*.md", root_dir="docs", recursive=True):
|
|
path = Path(pathName)
|
|
if path == Path("SUMMARY.md"):
|
|
pass
|
|
elif path == Path("changelogs/template.md"):
|
|
pass
|
|
elif path in summaryContents:
|
|
pass
|
|
else:
|
|
if not errorLines:
|
|
errorLines.append("## `docs/**/*.md` files present but not mentioned in `docs/SUMMARY.md`")
|
|
errorLines.append("- " + str(path))
|
|
|
|
if errorLines:
|
|
for line in errorLines:
|
|
print(line)
|
|
|
|
if 'GITHUB_STEP_SUMMARY' in os.environ:
|
|
with open(os.environ['GITHUB_STEP_SUMMARY'], 'w', encoding='UTF-8') as file:
|
|
for line in errorLines:
|
|
file.write(line)
|
|
file.write('\n')
|
|
|
|
quit(1)
|