Python Click: Как реализовать команду справки, которая ведет себя как `--help`? - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть 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 голосов
/ 04 ноября 2018

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))
...