mirror of
https://github.com/daylinmorgan/viv.git
synced 2024-11-14 21:17:54 -06:00
75 lines
1.5 KiB
Python
Executable file
75 lines
1.5 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
|
|
from pathlib import Path
|
|
from subprocess import run
|
|
from textwrap import dedent
|
|
from typing import Tuple
|
|
|
|
DOCS_PATH = Path(__file__).parent.parent / "docs"
|
|
(SAVE_PATH := DOCS_PATH / "svgs").mkdir(exist_ok=True, parents=True)
|
|
VIV = Path(__file__).parent.parent / "src" / "viv" / "viv.py"
|
|
CLI_DOC_PATH = DOCS_PATH / "cli.md"
|
|
|
|
|
|
(
|
|
cmds := dict.fromkeys(
|
|
(
|
|
"list",
|
|
"manage",
|
|
"freeze",
|
|
"shim",
|
|
"run",
|
|
),
|
|
[],
|
|
)
|
|
).update(
|
|
{
|
|
"manage": ["update", "purge", "show", "install"],
|
|
"env": ["exe", "info", "remove"],
|
|
},
|
|
)
|
|
|
|
|
|
cli_doc = """\
|
|
---
|
|
hide: [navigation]
|
|
---
|
|
|
|
# CLI Reference
|
|
|
|
![help](./svgs/viv-help.svg)
|
|
"""
|
|
|
|
|
|
def yartsu(output: Path, args: Tuple[str, str] | str) -> None:
|
|
if isinstance(args, str):
|
|
args = (args,)
|
|
viv_cmd = " ".join(("viv", *args, "--help"))
|
|
cmd = f"{viv_cmd} | yartsu -w 70 -t '{viv_cmd}' -o {output}"
|
|
run(cmd, shell=True)
|
|
|
|
|
|
if not SAVE_PATH.is_dir():
|
|
SAVE_PATH.mkdir(exist_ok=True, parents=True)
|
|
|
|
yartsu(SAVE_PATH / "viv-help.svg", "")
|
|
for cmd, subcmds in cmds.items():
|
|
p = SAVE_PATH / f"viv-{cmd}-help.svg"
|
|
cli_doc += dedent(
|
|
f"""
|
|
## {cmd}
|
|
![cmd](./svgs/{p.name})
|
|
"""
|
|
)
|
|
yartsu(p, cmd)
|
|
for subcmd in subcmds:
|
|
p_sub = SAVE_PATH / f"viv-{cmd}-{subcmd}-help.svg"
|
|
cli_doc += dedent(
|
|
f"""
|
|
### {cmd} {subcmd}
|
|
![cmd](./svgs/{p_sub.name})
|
|
"""
|
|
)
|
|
yartsu(p_sub, [cmd, subcmd])
|
|
|
|
CLI_DOC_PATH.write_text(cli_doc)
|