自动生成Click命令的所有帮助文档
Automatically generate all help documentation for Click commands
有没有一种方法可以使用单击所有命令和子命令来生成(和导出)帮助文档?
例如,
cli --help all --destination help-docs.txt
将为
之后的命令和子命令生成帮助
cli command subcommand
格式化并放入help-docs.txt
文件。
我认为我能做到这一点的唯一方法是使用
cli command subcommand --help
在我想为其生成帮助的每个子命令上 cat
输出到文件,但如果有更简单的方法可以使用 Click --help
功能来完成此操作,那就太好了。
此代码适用于 Click 7,主要使用已记录的 API。您基本上会在某处调用 recursive_help
,例如作为单独的子命令,并将其传递给您的顶级组对象。
def recursive_help(cmd, parent=None):
ctx = click.core.Context(cmd, info_name=cmd.name, parent=parent)
print(cmd.get_help(ctx))
print()
commands = getattr(cmd, 'commands', {})
for sub in commands.values():
recursive_help(sub, ctx)
2019-10-05更新:
假设 cli
是 click.group
,使用它的一种方法是:
@cli.command()
def dumphelp():
recursive_help(cli)
有没有一种方法可以使用单击所有命令和子命令来生成(和导出)帮助文档?
例如,
cli --help all --destination help-docs.txt
将为
之后的命令和子命令生成帮助cli command subcommand
格式化并放入help-docs.txt
文件。
我认为我能做到这一点的唯一方法是使用
cli command subcommand --help
在我想为其生成帮助的每个子命令上 cat
输出到文件,但如果有更简单的方法可以使用 Click --help
功能来完成此操作,那就太好了。
此代码适用于 Click 7,主要使用已记录的 API。您基本上会在某处调用 recursive_help
,例如作为单独的子命令,并将其传递给您的顶级组对象。
def recursive_help(cmd, parent=None):
ctx = click.core.Context(cmd, info_name=cmd.name, parent=parent)
print(cmd.get_help(ctx))
print()
commands = getattr(cmd, 'commands', {})
for sub in commands.values():
recursive_help(sub, ctx)
2019-10-05更新:
假设 cli
是 click.group
,使用它的一种方法是:
@cli.command()
def dumphelp():
recursive_help(cli)