У меня есть приложение Click, над которым я работаю, и я хочу настроить (переопределить) поведение Click по умолчанию, когда была вызвана команда / подкоманда, которая не известна.
В настоящее время существует только это сообщение об ошибке: Error: No such command xx
и после этого код больше не выполняется.
Моя первоначальная установка выглядит следующим образом:
@click.group(cls=CustomHelpOrder)
@click.option('-v', '--verbose',is_flag=True)
def myapp_cli(verbose):
if verbose:
do_verbose()
else:
do_not_verbose()
@myapp_cli.command(help_priority=1, short_help='Foo my project')
@click.option('--bar')
def baz(bar: str) -> None:
"""
Do something
"""
do_something(bar)
Так что я хочу иметь возможность сделать это :
- Проверьте, возникает ли это (специальное) исключение выше. (Возможно, если пользователь введет
bat
вместо baz
) - Если да, я хочу сохранить эту неизвестную команду (например,
bat
(вместо того, чтобы просто печатать сообщение по умолчанию и выйти) и использовать ее для дальнейшей обработки (например, передача ее различным функциям (возможно, в виде строки))
Я пытался try:
myapp_cli()
except Click.Exception:
handleExc()
, но я не смог выяснить, как это сделать, поскольку приложение просто завершается, если команда неизвестна (я думаю, прежде чем что-то сможет ее поймать; действительно наивный подход). Мне интересно, нужно ли как-то перезаписывать поведение по умолчанию, но, поскольку я новичок в Click, я не знаю, как.
Буду благодарен за любую помощь.