|
| 1 | +import os |
1 | 2 | import re
|
2 | 3 | import shutil
|
| 4 | +import string |
3 | 5 | from pathlib import Path
|
4 | 6 |
|
5 | 7 | import htmlmin
|
|
15 | 17 | LINKS_PATTERN = re.compile(r"\.\.\/\.\.\/man[1,3,5,7]{1}\/[a-zA-Z0-9_\-.]+")
|
16 | 18 | HEADINGS_PATTERN = re.compile(r" {0,3}(#{1,6})((?=\s)[^\n]*?|[^\n\S]*)(?:(?<=\s)(?<!\\)#+)?[^\n\S]*$\n?", flags=re.M)
|
17 | 19 | LINKS_MAP = {}
|
| 20 | +REDIRECT_PAGES = {} |
18 | 21 |
|
19 | 22 |
|
20 | 23 | def get_names_paragraph(content: str) -> str:
|
@@ -56,6 +59,10 @@ def on_files(files: Files, config: MkDocsConfig) -> Files | None:
|
56 | 59 | # e.g. "openssl/core_dispatch.h" to "openssl-core_dispatch.h"
|
57 | 60 | name = name.strip().replace("/", "-")
|
58 | 61 | LINKS_MAP[f"../../{man_dir}/{name}"] = f"../{man_dir}/{man_file.name}.md"
|
| 62 | + if name != man_file.name: |
| 63 | + redirect_page_uri = f"{man_file.dest_dir}/{man_dir}/{name}" |
| 64 | + source_page_uri = f"../../{man_file.dest_uri}" |
| 65 | + REDIRECT_PAGES[redirect_page_uri] = source_page_uri |
59 | 66 | return files
|
60 | 67 |
|
61 | 68 |
|
@@ -148,3 +155,11 @@ def on_nav(nav: Navigation, config: MkDocsConfig, files: Files) -> Navigation:
|
148 | 155 |
|
149 | 156 | def on_post_page(output: str, page: Page, config: MkDocsConfig) -> str:
|
150 | 157 | return htmlmin.minify(output, remove_comments=True, remove_empty_space=True)
|
| 158 | + |
| 159 | + |
| 160 | +def on_post_build(config: MkDocsConfig): |
| 161 | + template = '<!DOCTYPE html><html lang="en"><head><meta name="robots" content="noindex"><meta charset="utf-8"><meta http-equiv="refresh" content="0; url={}"></head></html>' |
| 162 | + for redirect_page_uri, source_page_uri in REDIRECT_PAGES.items(): |
| 163 | + path = Path(redirect_page_uri) |
| 164 | + os.makedirs(path.parent) |
| 165 | + path.write_text(template.format(source_page_uri)) |
0 commit comments