我有一个类似于这样的命令链。
@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)。
你可以通过一个结果回调装饰器来实现这一点。
@cli.resultcallback()
def process_result(result, **kwargs):
click.echo('Print your API name here')
这应该可以让代码在命令被调用后执行。然而,我不确定执行顺序对你是否重要。
希望能帮到你!