def partition_args(self, all_commands, args):
name = args[0]
try:
command = all_commands[name]
except KeyError:
raise RunnerError('Unknown command: {name}'.format(name=name))
args = args[1:]
command_args = []
partition = [command, command_args]
prev_args = chain([None], args[:-1])
next_args = chain(args[1:], [None])
for prev_arg, arg, next_arg in zip(prev_args, args, next_args):
if arg in all_commands:
option = command.arg_map.get(prev_arg)
if option is None or not option.takes_value:
break
if arg.startswith(':') and arg != ':':
arg = arg[1:]
command_args.append(arg)
return partition
评论列表
文章目录