fix: handle /docs/ prefix in link validator

Update resolveLink to strip /docs/ prefix from repo-relative links
before checking if files exist.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
forcetrainer 2026-01-08 11:57:04 -05:00
parent d94b9df0e3
commit 8979f2928c
1 changed files with 9 additions and 3 deletions

View File

@ -102,11 +102,17 @@ function extractAnchors(content) {
/** /**
* Resolve a site-relative link to a file path * Resolve a site-relative link to a file path
* /docs/how-to/installation/install-bmad.md -> docs/how-to/installation/install-bmad.md
* /how-to/installation/install-bmad/ -> docs/how-to/installation/install-bmad.md or .../index.md * /how-to/installation/install-bmad/ -> docs/how-to/installation/install-bmad.md or .../index.md
*/ */
function resolveLink(siteRelativePath) { function resolveLink(siteRelativePath) {
// Strip anchor and query // Strip anchor and query
const checkPath = siteRelativePath.split('#')[0].split('?')[0]; let checkPath = siteRelativePath.split('#')[0].split('?')[0];
// Strip /docs/ prefix if present (repo-relative links)
if (checkPath.startsWith('/docs/')) {
checkPath = checkPath.slice(5); // Remove '/docs' but keep leading '/'
}
if (checkPath.endsWith('/')) { if (checkPath.endsWith('/')) {
// Could be file.md or directory/index.md // Could be file.md or directory/index.md
@ -118,11 +124,11 @@ function resolveLink(siteRelativePath) {
return null; return null;
} }
// Direct path // Direct path (e.g., /path/file.md)
const direct = path.join(DOCS_ROOT, checkPath); const direct = path.join(DOCS_ROOT, checkPath);
if (fs.existsSync(direct)) return direct; if (fs.existsSync(direct)) return direct;
// Try with .md // Try with .md extension
const withMd = direct + '.md'; const withMd = direct + '.md';
if (fs.existsSync(withMd)) return withMd; if (fs.existsSync(withMd)) return withMd;