36 repo_root = Path(__file__).resolve().parents[1]
40 if not md_file.is_file():
41 failures.append((str(md_file),
"<file>",
"Markdown file not found"))
43 content = md_file.read_text(encoding=
"utf-8", errors=
"replace")
44 for match
in LINK_PATTERN.findall(content):
45 target = match[0]
or match[1]
51 resolved = (md_file.parent / normalized).resolve()
52 if not resolved.exists():
53 failures.append((str(md_file.relative_to(repo_root)), target, str(resolved)))
56 print(
"Broken markdown links detected:")
57 for src, target, resolved
in failures:
58 print(f
" - {src}: '{target}' -> missing '{resolved}'")
61 print(
"Markdown link check passed for README.md and docs/**/*.md")