是否有一种方法可以将多个命令分组,每个命令在一个函数下具有各自不同的参数
乍一看,MultiCommand
或Group
似乎是做我想做的事情的一种自然方式,即让一个主命令充当Group
(并传递invoke_without_command=True
标志),然后将辅助Command
作为子命令嵌套在它下面。但是,这并不是我想要的行为,因为我希望所有命令中的所有选项都能够在不显式调用子命令的情况下指定。此外,如果不在命令行上调用子命令,使用Group
也不会显示子命令的帮助文本
我想理想情况下我想要的是一种将多个命令分组在一起的方法,而不需要Click的Group
API固有的嵌套
抱歉,如果这个问题可能有点笼统。任何能为我指明正确方向的帮助、想法或提示都将不胜感激
下面是我想要的概要(文件名:cli_test.py
):
import click
@click.command()
@click.option('--db-file', type=click.File(mode='r'))
def db_reader(db_file):
click.echo(db_file)
@click.command()
@click.option('--xval', type=float)
@click.option('--yval', type=float)
def get_vals(xval, yval):
return xval, yval
@click.command()
@click.option('--absolutize/--no-absolutize')
def flagger(absolutize):
click.echo(absolutize)
@click.command()
def cli_runner():
db = db_reader.main(standalone_mode=False)
vals = flagger.main(standalone_mode=False)
flag = flagger.main(standalone_mode=False)
if __name__ == '__main__':
cli_runner()
本质上,我想要一个可以在CLI上运行的命令(cli_runner
,在上面的示例中),该命令能够获取其中调用的所有Click命令的参数,然后将它们的处理分派到适当的Command
实例。然而,现在,如果我在CLI上调用:$ python cli_test.py --xval 4
,我会得到错误Error: no such option: --xval
。我也尝试过使用pass_context
和ctx.invoke()
方法,但同样的问题也存在
我想我可以将所有包含的命令中的参数传递到cli_runner
,但这将破坏我想要做的事情的目的,即最终拥有3-4个模块化的“子命令”,然后可以以不同的组合组合组合在一起,形成更大的接口,为稍微不同的用例提供服务
目前没有回答
相关问题 更多 >
编程相关推荐