| #!/usr/bin/env python3 |
| # Copyright 2023 The IREE Authors |
| # |
| # Licensed under the Apache License v2.0 with LLVM Exceptions. |
| # See https://llvm.org/LICENSE.txt for license information. |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| |
| """Custom edit URL plugin for mkdocs. |
| |
| MkDocs can create links to view/edit the source of a website page in the |
| associated source location (e.g. GitHub repository). |
| |
| * https://www.mkdocs.org/user-guide/configuration/#edit_uri |
| * https://squidfunk.github.io/mkdocs-material/setup/adding-a-git-repository/#code-actions |
| |
| For markdown files in the documentation folder, this is a straightforward |
| process, taking the relative path and appending it to the source location: |
| /repo_root/docs/section/page.md --> |
| https://github.com/[org]/[repo]/blob/main/docs/section/page.md |
| |
| For generated files, the inferred URL does not match the actual source: |
| /repo_root/src/file.cc --> |
| /repo_root/docs/gen/file.md --> |
| [broken link] https://github.com/[org]/[repo]/blob/main/docs/gen/file.md |
| |
| This plugin allows for pages to explicitly specify their source URL via |
| markdown frontmatter. |
| |
| References: |
| * https://github.com/renovatebot/renovatebot.github.io/pull/187 |
| * https://github.com/mkdocs/mkdocs/discussions/2757 |
| |
| Usage: |
| |
| 1. Add a hook to mkdocs.yml by following |
| https://www.mkdocs.org/user-guide/configuration/#hooks |
| |
| 2. Add frontmatter to any pages you want to customize: |
| |
| --- |
| custom_edit_url: [full hyperlink to the source location, e.g. https://github.com/...] |
| --- |
| """ |
| |
| |
| def on_page_context(context, page, config, **kwargs): |
| if "custom_edit_url" in page.meta: |
| page.edit_url = page.meta["custom_edit_url"] |
| return context |