Add unspecified options to cli command using python-click

前端 未结 1 1982
孤街浪徒
孤街浪徒 2020-12-06 17:12

I would like to add unspecified options to the cli command using python-click library. So my cli function could look like the following

$ my-cmd --option1 va         


        
相关标签:
1条回答
  • 2020-12-06 17:51

    You can pass context with ignore_unknown_options and allow_extra_args settings, the extra arguments will be collected in context.args list (['--unknown_var', 'value3', '--unknown_var2', 'value4']). Then you can transform it to dict.

    import click
    
    @click.command(name='my-cmd', context_settings=dict(
        ignore_unknown_options=True,
        allow_extra_args=True,
    ))
    @click.option('--option1')
    @click.option('--option2')
    @click.pass_context
    def cli(ctx, option1, option2):
        click.echo({ctx.args[i][2:]: ctx.args[i+1] for i in xrange(0, len(ctx.args), 2)})
    

    example

    python cli.py --option1 value1 --option2 value2 --unknown_var value3 --unknown_var2 value4
    >> {'unknown_var2': 'value4', 'unknown_var': 'value3'}
    

    See Forwarding Unknown Options.

    0 讨论(0)
提交回复
热议问题