1
Clickに基づくFlask CLIインフラストラクチャを使用してコマンドラインアプリケーションを実装しようとしています。そのインターフェイスは次のように動作するはずです:CLI(Click)内の複数のコンテキストオブジェクト
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
フラグに基づいて、2つの異なるオブジェクトを作成し、するためにそれらの両方が利用できるようにする必要があり、あります基本的なコマンドは不可能と思われる。このための回避策はありますか?
Contextオブジェクトのmeta
プロパティを使用することができますが、それは多くの定型文を書くことを意味します。
ありがとうございました! 'obj'のカスタムクラスを使うのは、私が本当に「純粋」ではないにもかかわらず、私にとって最良の方法のようです。ああ、ちょっとした修正 - 'find_object'は直接の親だけでなくコンテキスト階層全体を検索します。 – Teyras
私は助けてうれしかった。がんばろう ; ) –