Итак, у меня было go. Мне удалось сделать это следующими способами.
Во-первых, я попробовал это, хотя это не удовлетворяет критериям --parameter
.
@click.command("test")
@click.argument("args", nargs=-1)
def test(args):
args = dict([arg.split("=") for arg in args])
print(args)
, поэтому при вызове вроде test param1=test1 param2=test
вывод:
{'param1': 'test1', 'param2': 'test2' }
Во-вторых, я подумал о множественном варианте в сочетании с аргументом variadi c, который, кажется, ближе к вашим требованиям: test -p param1=test -p param2=test
@click.command("test")
@click.option('-p', '--parameter', multiple=True)
@click.argument("args", nargs=-1)
def test(*args, **kwargs):
param_args = kwargs['parameter']
param_args = dict([p.split('=') for p in param_args])
print(param_args)
if __name__ == '__main__':
test()
Вывод будет таким же, как и в предыдущем случае.
Если бы вы набрали print(kwargs['parameter'])
, вы бы получили
('param1=test', 'param2=test')
Звучит немного чище, чем используя обратный вызов, но не намного. Тем не менее, надеюсь, что это помогает.