我有一个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
答案 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))