1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-12-15 10:58:09 +00:00
trezor-firmware/python/helper-scripts/make-options-rst.py

71 lines
1.9 KiB
Python
Executable File

#!/usr/bin/env python3
# This file is part of the Trezor project.
#
# Copyright (C) 2012-2022 SatoshiLabs and contributors
#
# This library is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License version 3
# as published by the Free Software Foundation.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the License along with this library.
# If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
import os
from typing import List
import click
from trezorlib.cli import trezorctl
DELIMITER_STR = "### ALL CONTENT BELOW IS GENERATED"
options_rst = open(os.path.dirname(__file__) + "/../docs/OPTIONS.rst", "r+")
lead_in: List[str] = []
for line in options_rst:
lead_in.append(line)
if DELIMITER_STR in line:
break
options_rst.seek(0)
options_rst.truncate(0)
for line in lead_in:
options_rst.write(line)
def _print(s: str = "") -> None:
options_rst.write(s + "\n")
def rst_code_block(help_str: str) -> None:
_print(".. code::")
_print()
for line in help_str.split("\n"):
_print((" " + line) if line else "")
_print()
ctx = click.Context(trezorctl.cli, info_name="trezorctl", terminal_width=99)
rst_code_block(trezorctl.cli.get_help(ctx))
for subcommand in sorted(trezorctl.cli.commands):
cmd = trezorctl.cli.commands[subcommand]
if not isinstance(cmd, click.Group):
continue
heading = cmd.get_short_help_str(limit=99)
_print(heading)
_print("~" * len(heading))
_print()
rst_code_block(f"trezorctl {subcommand} --help")
ctx = click.Context(cmd, info_name=f"trezorctl {subcommand}", terminal_width=99)
rst_code_block(cmd.get_help(ctx))