Refdog generated links with {{site.prefix}} template syntax that worked for Transom/Jekyll but broke MkDocs macros plugin, causing 'site' is undefined errors.
Made link prefix configurable via environment variable, allowing refdog to generate output for different deployment targets.
Lines added: 7 (after line 3)
import os as _os
# Link prefix - configurable via environment variable
SITE_PREFIX = _os.getenv('REFDOG_SITE_PREFIX', '{{site.prefix}}')Lines changed: 2
- Line 120:
url = SITE_PREFIX + url(wasurl = "{{site.prefix}}" + url) - Line 261:
return f"{SITE_PREFIX}/{plural(type)}/{self.id}.html"(was hardcoded template)
Lines changed: 1
- Line 473:
return f"{SITE_PREFIX}/commands/{self.id}/index.html"(was hardcoded template)
Lines changed: 3
- Lines 64-66: Replace
{{site.prefix}}in descriptions before output
Total code changes: 13 lines across 3 files
./regenerate-refdog.sh
# Uses REFDOG_SITE_PREFIX="/refdog" by defaultREFDOG_SITE_PREFIX="{{site.prefix}}" ./plano generateREFDOG_SITE_PREFIX="/reference" ./regenerate-refdog.shREFDOG_SITE_PREFIX="" ./regenerate-refdog.sh<a href="/refdog/commands/site/create.html">Site create</a>
<a href="/refdog/resources/site.html">Site resource</a><a href="/commands/site/create.html">Site create</a>
<a href="/resources/site.html">Site resource</a><a href="/reference/commands/site/create.html">Site create</a>
<a href="/reference/resources/site.html">Site resource</a># Verify no template syntax remains
grep -r "{{site.prefix}}" refdog/input/
# Should return 0 matches
# Check generated links
grep -m 5 'href=' refdog/input/commands/index.md
# Should show links with configured prefixregenerate-refdog.sh(new) - Regeneration script with prefix configuration(removed) - No longer needed!fix-refdog-for-mkdocs.sh
LINK-RESOLUTION.md(new) - Complete guide to link resolutionLINK-PREFIX-SOLUTION.md(new) - Technical details and implementation optionsREFDOG-NAVIGATION.md(new) - MkDocs navigation optionsMKDOCS-INTEGRATION.md(new) - MkDocs integration guideREADME.md(updated) - New workflow without sed post-processingPLAN.md(updated) - Integration approach updated
✅ No post-processing needed - Links generated correctly by default ✅ Flexible deployment - Works for any base path ✅ Backward compatible - Default preserves Transom template syntax ✅ Simple configuration - Single environment variable ✅ Clean code - Minimal changes (13 lines) ✅ MkDocs compatible - No more macros plugin conflicts
# Test default (MkDocs /refdog path)
./regenerate-refdog.sh
grep '/refdog/commands' refdog/input/commands/index.md
# Test empty (root deployment)
REFDOG_SITE_PREFIX="" ./regenerate-refdog.sh
grep -v '/refdog' refdog/input/commands/index.md | grep '/commands'
# Test custom path
REFDOG_SITE_PREFIX="/api-reference" ./regenerate-refdog.sh
grep '/api-reference/commands' refdog/input/commands/index.mdcd refdog
./plano generate
cd ..
./fix-refdog-for-mkdocs.sh # sed post-processing./regenerate-refdog.sh # One command, properly configuredDefault behavior unchanged for Transom/Jekyll users:
# Without env var, uses {{site.prefix}} template syntax
./plano generate # Still works for Transom!MkDocs users explicitly set the prefix:
# With env var, uses actual path
REFDOG_SITE_PREFIX="/refdog" ./plano generate- Test in your MkDocs build
- Verify links resolve correctly
- Adjust
REFDOG_SITE_PREFIXif needed (see LINK-RESOLUTION.md) - Commit changes
- Link resolution: See
LINK-RESOLUTION.md - Navigation setup: See
REFDOG-NAVIGATION.md - MkDocs integration: See
MKDOCS-INTEGRATION.md - Technical details: See
LINK-PREFIX-SOLUTION.md