Example #1
0
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
Example #2
0
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)