I'm writing a Python wrapper around another program. I want the user to be able to specify a few options for the wrapper and then pass the rest of the command-line through to the wrapped program. Something like this:
@click.command()
@click.option("--port", type=int)
@click.argument("args", nargs=-1)
def main(port, args):
call_the_wrapped_program(port=port, args=args)
But this dies with Error: no such option: -k
because it treats any command-line switch as something it should parse rather than an argument that can be added to args
.
Is this possible?
The Forwarding Unknown Options section in the documentation covers this use case. You should be able to write something like this:
@click.command(context_settings=dict(
ignore_unknown_options=True,
))
@click.option("--port", type=int)
@click.argument("args", nargs=-1, type=click.UNPROCESSED)
def main(port, args):
call_the_wrapped_program(port=port, args=args)