在 python 单击链命令中向所有叶级命令添加命令
add a command to all leaf level commands in a python click chain commands
我有一个类似这样的命令链。
@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 的名称。
在不更改所有叶级函数的情况下实现的最佳方法是什么(即 sync1/sync2)。
实现此目的的一种方法是使用结果回调装饰器。
@cli.resultcallback()
def process_result(result, **kwargs):
click.echo('Print your API name here')
这应该允许在调用命令后执行代码。但是,我不确定执行顺序对您是否重要。
希望对您有所帮助!
我有一个类似这样的命令链。
@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 的名称。
在不更改所有叶级函数的情况下实现的最佳方法是什么(即 sync1/sync2)。
实现此目的的一种方法是使用结果回调装饰器。
@cli.resultcallback()
def process_result(result, **kwargs):
click.echo('Print your API name here')
这应该允许在调用命令后执行代码。但是,我不确定执行顺序对您是否重要。
希望对您有所帮助!