backstage / mkdocs-monorepo-plugin

✚ Build multiple documentation folders in a single Mkdocs. Designed for large codebases.
https://backstage.github.io/mkdocs-monorepo-plugin/
Apache License 2.0
313 stars 75 forks source link

[feature] Support for mono-repo that use symlinks #121

Open bartvandenende-wm opened 6 months ago

bartvandenende-wm commented 6 months ago

Summary

Request to add support for mono-repos that use symlinks

Details

We are exploring the usage of mkdocs for a typescript mono-repo that uses symlinks via pnpm package manager to link packages.

An example folder tree structure would be

- docs/*.md
- node_modules/{package-name}/mkdocs.yml << {package-name} is a folder symlink
- mkdocs.yml

with a mkdocs.yml config:

nav:
  - Intro: 'index.md'
  - Libraries: '*include ./node_modules/*/mkdocs.yml'

Unfortunately the above config does not work as mkdocs-monorepo-plugin resolves the symlinks to absolute paths which are outside of the project directory.

I was curious if there is a need to resolve symlinks for the plugin and if the below two resolve actions? https://github.com/backstage/mkdocs-monorepo-plugin/blob/b1965a216af41c7e503753c63551d894fac8399d/mkdocs_monorepo_plugin/parser.py#L56 https://github.com/backstage/mkdocs-monorepo-plugin/blob/b1965a216af41c7e503753c63551d894fac8399d/mkdocs_monorepo_plugin/parser.py#L117

Proposal

A suggested change proposal would be to update the above path method .resolve() to .absolute(), which still resolves the absolute path but does not resolve the symlink per https://docs.python.org/3/library/pathlib.html#pathlib.Path.absolute