自动生成所有Click命令的帮助文档

7
有没有一种使用 click 生成(并导出)所有命令和子命令的帮助文档的方法?
例如, cli --help all --destination help-docs.txt 将为以下命令和子命令生成帮助: cli command subcommand 并将它们放入 help-docs.txt 文件中。
我唯一能想到的实现方式是对每个子命令使用 cli command subcommand --help 命令,然后将输出内容使用 cat 命令写入文件,但如果使用 Click 的 --help 功能来完成这个任务会更加简单。

我认为这在本地不可能实现。需要进行程序更改的解决方案是否可接受? - Stephen Rauch
@StephenRauch 是的 - scottlittle
2个回答

9
这段代码适用于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)

1

由于您正在使用click包,我知道两个很酷的解决方案:

  1. 是使用click-man自动生成Python click CLI man页面
  2. 是使用md-click自动生成Python click CLI帮助以md文件格式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接