9

最近発見されたクリックで、指定されていない数の kwargs をクリック コマンドに渡したいと思います。現在、これは私のコマンドです:

@click.command()
@click.argument('tgt')
@click.argument('fun')
@click.argument('args', nargs=-1)
def runner(tgt, fun, args):
    req = pyaml.p(meh.PostAdapter(tgt, fun, *args))
    click.echo(req)

ただし、nargs を使用すると、タプル ([docs][1]) として 1 つ以上が渡されますがtype=dict、残念ながらそれはできません。

しかし、次のようなことができるはずです:

command positional1 positional2 foo='bar' baz='qux' xxx='yyy'

助けや提案をお寄せいただきありがとうございます。それまでの間、私はこれを自分で削り続けます。

4

1 に答える 1

10

@rmn が提供したリンクを使用して、クリック コマンドを次のように書き直しました。

@click.command(context_settings=dict(
    ignore_unknown_options=True,
    allow_extra_args=True,
))
@click.pass_context
def runner(ctx, tgt, fun):
    d = dict()
    for item in ctx.args:
        d.update([item.split('=')])
    req = pyaml.p(meh.PostAdapter(tgt, fun, d))
    click.echo(req)

これにより、次のコマンドを適切に発行できます。

mycmd tgt fun foo='bar' baz='qux' xxx='yyy'

于 2016-04-09T20:28:11.980 に答える