Python Click: группа должна выполнить код ПОСЛЕ команды
У меня есть click.group()
определены, с около 10 команд в нем. Я понимаю, как использовать группу для запуска кода перед кодом в команде, но я также хочу запускать некоторый код ПОСЛЕ каждой команды. Это возможно с кликом?
2 ответа
Вы можете использовать @resultcallback decorator
@click.group()
def cli():
click.echo('Before command')
@cli.resultcallback()
def process_result(result, **kwargs):
click.echo('After command')
@cli.command()
def command():
click.echo('Command')
if __name__ == '__main__':
cli()
>> python cli.py command
>> Before command
>> Command
>> After command
Это сработало для меня
Click==7.0
. Еще не пробовали resultcallback
$ cat check.py
import click
@click.group()
@click.pass_context
def cli(ctx):
print("> Welcome!!")
ctx.call_on_close(_on_close)
def _on_close():
print("> Done!!")
@cli.command()
def hello():
print("Hello")
if __name__ == '__main__':
cli()
Выход:
$ python3 check.py hello
> Welcome!!
Hello
> Done!!