1
我試圖使用基於Click的Flask CLI基礎結構實現命令行應用程序。它的界面應該像這樣工作:CLI中的多個上下文對象(單擊)
app.py -c config.cfg cmd_a
app.py -c config.cfg cmd_b
我有以下代碼:
@click.group
@click.option('-c', 'config')
@click.pass_context
def cli(ctx, config):
ctx.obj = ObjA(config)
ctx.obj = ObjB(config) # Just for illustration
@cli.command()
@click.pass_context()
def cmd_a(ctx):
ctx.find_object(ObjA)
@cli.command()
@cli.pass_context()
def cmd_b(ctx):
ctx.find_object(ObjB)
cli()
問題是,我需要根據-c
標誌創建兩個不同的對象,使他們既提供給底層命令,這似乎是不可能的。有沒有解決方法?
我知道我可以使用Context對象的meta
屬性,但這意味着寫了很多樣板。
謝謝!在'obj'中使用自定義類似乎是對我來說最好的方式,儘管它不完全是「純粹的」。哦,還有一點修正 - find_object搜索整個上下文層次結構,而不僅僅是直接的父對象。 – Teyras
我很樂意提供幫助。祝你好運 ; ) –