Python click group: Как получить -h / - справку для всех команд - PullRequest
1 голос
/ 14 января 2020

Контекст:

У меня есть несколько сценариев с множеством подкоманд, которые я хотел бы преобразовать в click

На данный момент все эти команды принимают -h и --help для отображения параметров справки. Я хотел бы сохранить это поведение.

Проблема:

клик принимает по умолчанию --help для отображения текста справки, но не -h

для команды щелчка это можно легко изменить, добавив.

@click.group()
@click.help_option("--help", "-h")
def cli():
    """ the doc string """
    enter code here

@cli.command()
@click.help_option("--help", "-h")
def mycommand()
    pass

@cli.command()
@click.help_option("--help", "-h")
def mycommand1()
    pass

...

Однако, если у меня десятки команд, я должен повторно применить строку декоратора

@click.help_option("--help", "-h")

fort каждая подкоманда.

Был бы какой-нибудь трюк, чтобы избежать необходимости писать эту строку везде?

1 Ответ

1 голос
/ 14 января 2020

Вам необходимо определить CONTEXT_SETTINGS и использовать его следующим образом:

CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help'])

@click.command(context_settings=CONTEXT_SETTINGS)
def cli():
    pass

От щелчка Документация :

Справка Параметр Настройка Журнал изменений Справка Параметр реализован в Click очень особым образом. В отличие от обычных параметров, он автоматически добавляется Click для любой команды и выполняет автоматическое c разрешение конфликтов. По умолчанию это называется --help, но это можно изменить. Если команда сама реализует параметр с тем же именем, параметр справки по умолчанию перестает принимать его. Существует параметр контекста, который можно использовать для переопределения имен параметров справки, называемых help_option_names.

В этом примере параметры по умолчанию изменяются на -h и --help вместо просто --help:

CONTEXT_SETTINGS = dict (help_option_names = ['- h', '--help'])

@click.command (context_settings = CONTEXT_SETTINGS) def cli (): pass И как это выглядит:

$ cli -h Использование: cli [ОПЦИИ]

Опции: -h, --help Показать это сообщение и выйти.

...