Python点击:如何实现行为类似于`--help`的帮助命令?

时间:2018-11-03 11:16:01

标签: python python-click

我有一个python单击CLI。当我将--help传递给任何命令时,它会打印一条我喜欢的帮助消息。我发现这些天有很多用户在输入

mycli help foo

代替

mycli foo --help

是否有一种方法可以使所有命令以通用方式与前者一样工作?

该命令的实现大致如此

@click.group()
@click.pass_context
def cli(ctx):
    ctx.obj = {}

@cli.command()
@click.argument('my_arg')
@click.pass_context
@report_errors
def foo(ctx, my_arg):
    # some stuff here

1 个答案:

答案 0 :(得分:2)

click.Command对象具有一个get_help()方法,该方法返回其--help字符串。将此与组的get_command()方法结合起来以查找子命令,这样的事情应该可以工作(未经测试):

@cli.command()
@click.argument('subcommand')
@click.pass_context
def help(ctx, subcommand):
    subcommand_obj = cli.get_command(ctx, subcommand)
    if subcommand_obj is None:
        click.echo("I don't know that command.")
    else:
        click.echo(subcommand_obj.get_help(ctx))