1#!/usr/bin/python
2#
3# Server that will communicate over stdin/stderr
4#
5# This requires Python 2.6 or later.
6
7from __future__ import print_function
8import sys
9import time
10
11if __name__ == "__main__":
12
13    if len(sys.argv) > 1:
14        if sys.argv[1].startswith("err"):
15            print(sys.argv[1], file=sys.stderr)
16            sys.stderr.flush()
17        elif sys.argv[1].startswith("incomplete"):
18            print(sys.argv[1], end='')
19            sys.stdout.flush()
20            sys.exit(0)
21        else:
22            print(sys.argv[1])
23            sys.stdout.flush()
24            if sys.argv[1].startswith("quit"):
25                sys.exit(0)
26
27    while True:
28        typed = sys.stdin.readline()
29        if typed.startswith("quit"):
30            print("Goodbye!")
31            sys.stdout.flush()
32            break
33        if typed.startswith("echo "):
34            print(typed[5:-1])
35            sys.stdout.flush()
36        if typed.startswith("echosplit "):
37            for part in typed[10:-1].split('|'):
38                sys.stdout.write(part)
39                sys.stdout.flush()
40                time.sleep(0.05)
41        if typed.startswith("double "):
42            print(typed[7:-1] + "\nAND " + typed[7:-1])
43            sys.stdout.flush()
44        if typed.startswith("split "):
45            print(typed[6:-1], end='')
46            sys.stdout.flush()
47            time.sleep(0.05)
48            print(typed[6:-1], end='')
49            sys.stdout.flush()
50            time.sleep(0.05)
51            print(typed[6:-1])
52            sys.stdout.flush()
53        if typed.startswith("echoerr "):
54            print(typed[8:-1], file=sys.stderr)
55            sys.stderr.flush()
56        if typed.startswith("doubleerr "):
57            print(typed[10:-1] + "\nAND " + typed[10:-1], file=sys.stderr)
58            sys.stderr.flush()
59        if typed.startswith("XXX"):
60            print(typed, end='')
61            sys.stderr.flush()
62            break
63
64