自动生成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更新: 假设 cliclick.group,使用它的一种方法是:

@cli.command()
def dumphelp():
    recursive_help(cli)