diff options
| author | 2023-10-07 07:49:33 +0800 | |
|---|---|---|
| committer | 2023-10-07 07:49:33 +0800 | |
| commit | 4b174b5b5646f748a9cd1bba33c7e4f9b247eecb (patch) | |
| tree | 449c75ad7b2278208de946b28819af25cfe39667 /docs/CLI/index.md | |
| parent | 1d61716d07eafa928a90bb51e311d5a66778cad6 (diff) | |
| download | infini-4b174b5b5646f748a9cd1bba33c7e4f9b247eecb.tar.gz infini-4b174b5b5646f748a9cd1bba33c7e4f9b247eecb.zip | |
feat(docs): version update
Diffstat (limited to 'docs/CLI/index.md')
| -rw-r--r-- | docs/CLI/index.md | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/docs/CLI/index.md b/docs/CLI/index.md index c31a0bc9..cc619ae4 100644 --- a/docs/CLI/index.md +++ b/docs/CLI/index.md @@ -1 +1,64 @@ # CLI Reference + +```python exec="1" idprefix="" +import argparse +import re +from HydroRollCore import Cli + +parser = Cli().parser + +MONOSPACED = ("pyproject.toml", "pdm.lock", ".pdm-python", ":pre", ":post", ":all") + +def clean_help(help: str) -> str: + # Make dunders monospaced avoiding italic markdown rendering + help = re.sub(r"__([\w\d\_]+)__", r"`__\1__`", help) + # Make env vars monospaced + help = re.sub(r"env var: ([A-Z_]+)", r"env var: `\1`", help) + for monospaced in MONOSPACED: + help = re.sub(rf"\s(['\"]?{monospaced}['\"]?)", f"`{monospaced}`", help) + return help + + +def render_parser( + parser: argparse.ArgumentParser, title: str, heading_level: int = 2 +) -> str: + """Render the parser help documents as a string.""" + result = [f"{'#' * heading_level} {title}\n"] + if parser.description and title != "HydroRollCore": + result.append("> " + parser.description + "\n") + + for group in sorted( + parser._action_groups, key=lambda g: g.title.lower(), reverse=True + ): + if not any( + bool(action.option_strings or action.dest) + or isinstance(action, argparse._SubParsersAction) + for action in group._group_actions + ): + continue + + result.append(f"{group.title.title()}:\n") + for action in group._group_actions: + if isinstance(action, argparse._SubParsersAction): + for name, subparser in action._name_parser_map.items(): + result.append(render_parser(subparser, name, heading_level + 1)) + continue + + opts = [f"`{opt}`" for opt in action.option_strings] + if not opts: + line = f"- `{action.dest}`" + else: + line = f"- {', '.join(opts)}" + if action.metavar: + line += f" `{action.metavar}`" + line += f": {clean_help(action.help)}" + if action.default and action.default != argparse.SUPPRESS: + line += f" (default: `{action.default}`)" + result.append(line) + result.append("") + + return "\n".join(result) + + +print(render_parser(parser, "HydroRollCore")) +```
\ No newline at end of file |
