def split_legacy_spec(cmdspec): """ Split a legacy specification object into pargs, kwargs, and flags """ kwargs = {} for kwarg, subspec in cmdspec.items(): if kwarg in cmdspec.flags: continue if kwarg in ("if", "elseif", "while"): subparser = parser.parse_conditional elif kwarg == "COMMAND": subparser = parser.parse_shell_command elif isinstance(subspec, parser.IMPLICIT_PARG_TYPES): subparser = parser.StandardParser(subspec) elif isinstance(subspec, (commands.CommandSpec)): subparser = get_legacy_parse(subspec) else: raise ValueError("Unexpected kwarg spec of type {}".format( type(subspec))) kwargs[kwarg] = subparser return cmdspec.pargs, kwargs, cmdspec.flags
def get_legacy_parse(cmdspec): """ Construct a parse tree from a legacy command specification """ pargs, kwargs, flags = split_legacy_spec(cmdspec) return parser.StandardParser(pargs, kwargs, flags)