(cmd)
| 600 | |
| 601 | # Parses command line into command and parameters. |
| 602 | def 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!") |
no test coverage detected
searching dependent graphs…