MCPcopy Index your code
hub / github.com/tinode/chat / parse_input

Function parse_input

tn-cli/commands.py:602–697  ·  view source on GitHub ↗
(cmd)

Source from the content-addressed store, hash-verified

600
601# Parses command line into command and parameters.
602def parse_input(cmd):
603 # Split line into parts using shell-like syntax.
604 try:
605 parts = shlex.split(cmd, comments=True)
606 except Exception as err:
607 printout('Error parsing command: ', err)
608 return None
609 if len(parts) == 0:
610 return None
611
612 parser = None
613 varname = None
614 synchronous = False
615 failOnError = False
616
617 if parts[0] == ".use":
618 parser = argparse.ArgumentParser(prog=parts[0], description='Set default user or topic')
619 parser.add_argument('--user', default="unchanged", help='ID of default (on_behalf_of) user')
620 parser.add_argument('--topic', default="unchanged", help='Name of default topic')
621
622 elif parts[0] == ".await" or parts[0] == ".must":
623 # .await|.must [<$variable_name>] <waitable_command> <params>
624 if len(parts) > 1:
625 synchronous = True
626 failOnError = parts[0] == ".must"
627 if len(parts) > 2 and parts[1][0] == '$':
628 # Varname is given
629 varname = parts[1]
630 parts = parts[2:]
631 parser = parse_cmd(parts)
632 else:
633 # No varname
634 parts = parts[1:]
635 parser = parse_cmd(parts)
636
637 elif parts[0] == ".log":
638 parser = argparse.ArgumentParser(prog=parts[0], description='Write value of a variable to stdout')
639 parser.add_argument('varname', help='name of the variable to print')
640
641 elif parts[0] == ".sleep":
642 parser = argparse.ArgumentParser(prog=parts[0], description='Pause execution')
643 parser.add_argument('millis', type=int, help='milliseconds to wait')
644
645 elif parts[0] == ".verbose":
646 parser = argparse.ArgumentParser(prog=parts[0], description='Toggle logging verbosity')
647
648 elif parts[0] == ".delmark":
649 parser = argparse.ArgumentParser(prog=parts[0], description='Use custom delete maker instead of default DEL!')
650 parser.add_argument('delmark', help='marker to use')
651
652 else:
653 parser = parse_cmd(parts)
654
655 if not parser:
656 printout("Unrecognized:", parts[0])
657 printout("Possible commands:")
658 printout("\t.await\t\t- wait for completion of an operation")
659 printout("\t.delmark\t- custom delete marker to use instead of default DEL!")

Callers 1

serialize_cmdFunction · 0.85

Calls 4

printoutFunction · 0.90
parse_cmdFunction · 0.85
nameMethod · 0.45
descriptionMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…