File: api-render.py

package info (click to toggle)
mitmproxy 8.1.1-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 38,952 kB
  • sloc: python: 53,389; javascript: 1,603; xml: 186; sh: 105; ansic: 68; makefile: 13
file content (71 lines) | stat: -rw-r--r-- 1,699 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/env python3
import os
import shutil
import textwrap
from pathlib import Path

import pdoc.render_helpers

here = Path(__file__).parent

if os.environ.get("DOCS_ARCHIVE", False):
    edit_url_map = {}
else:
    edit_url_map = {
        "mitmproxy": "https://github.com/mitmproxy/mitmproxy/blob/main/mitmproxy/",
    }

pdoc.render.configure(
    template_directory=here / "pdoc-template",
    edit_url_map=edit_url_map,
)
# We can't configure Hugo, but we can configure pdoc.
pdoc.render_helpers.formatter.cssclass = "chroma pdoc-code"

modules = [
    "mitmproxy.addonmanager",
    "mitmproxy.certs",
    "mitmproxy.connection",
    "mitmproxy.coretypes.multidict",
    "mitmproxy.dns",
    "mitmproxy.flow",
    "mitmproxy.http",
    "mitmproxy.net.server_spec",
    "mitmproxy.proxy.context",
    "mitmproxy.proxy.server_hooks",
    "mitmproxy.tcp",
    "mitmproxy.tls",
    "mitmproxy.websocket",
    here / ".." / "src" / "generated" / "events.py",
]

pdoc.pdoc(*modules, output_directory=here / ".." / "src" / "generated" / "api")

api_content = here / ".." / "src" / "content" / "api"
if api_content.exists():
    shutil.rmtree(api_content)

api_content.mkdir()

for module in modules:
    if isinstance(module, Path):
        continue
    filename = f"api/{module.replace('.', '/')}.html"
    (api_content / f"{module}.md").write_text(
        textwrap.dedent(
            f"""
        ---
        title: "{module}"
        url: "{filename}"

        menu:
            addons:
                parent: 'Event Hooks & API'
        ---

        {{{{< readfile file="/generated/{filename}" >}}}}
        """
        )
    )

(here / ".." / "src" / "content" / "addons-api.md").touch()