在python中添加一条命令到所有叶级命令中,点击链式命令。

问题描述 投票:0回答:1

我有一个类似于这样的命令链。

@click.group()
@click.option('--debug/--no-debug', default=False)
def cli(debug):
    click.echo('Debug mode is %s' % ('on' if debug else 'off'))

@cli.command()  
def sync1():
    click.echo('Syncing 1')
@cli.command()  
def sync2():
    click.echo('Syncing 1')
tool.py
Usage: tool.py [OPTIONS] COMMAND [ARGS]...

Options:
  --debug / --no-debug
  --help                Show this message and exit.

Commands:
  sync1
  sync2

这就是我如何以嵌套的方式运行我的命令。

tool.py sync1 --help

tool.py sync2 --help

现在想象一下,每一条叶子级命令(即sync1和sync2)都会调用一些API,而我想打印该API的名称。

什么是最好的方法来实现在不改变所有叶级功能(即sync1sync2)。

python click command-line-interface python-click
1个回答
0
投票

你可以通过一个结果回调装饰器来实现这一点。

@cli.resultcallback()
def process_result(result, **kwargs):
    click.echo('Print your API name here')

这应该可以让代码在命令被调用后执行。然而,我不确定执行顺序对你是否重要。

希望能帮到你!

© www.soinside.com 2019 - 2024. All rights reserved.