blob: 5caffcbf9e345b1ab80113065725aff8edb73268 [file] [log] [blame]
Bram Moolenaar6463ca22016-02-13 17:04:46 +01001#!/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
Bram Moolenaarbbe8d912016-06-05 16:10:57 +02009import time
Bram Moolenaar6463ca22016-02-13 17:04:46 +010010
11if __name__ == "__main__":
12
13 if len(sys.argv) > 1:
Bram Moolenaarf65333c2016-03-08 18:27:21 +010014 if sys.argv[1].startswith("err"):
15 print(sys.argv[1], file=sys.stderr)
16 sys.stderr.flush()
Bram Moolenaar620ca2d2017-12-09 19:13:13 +010017 elif sys.argv[1].startswith("incomplete"):
18 print(sys.argv[1], end='')
19 sys.stdout.flush()
20 sys.exit(0)
Bram Moolenaar65240682019-02-10 22:23:26 +010021 elif sys.argv[1].startswith("busy"):
22 time.sleep(100)
23 sys.exit(0)
Bram Moolenaarf65333c2016-03-08 18:27:21 +010024 else:
25 print(sys.argv[1])
26 sys.stdout.flush()
Bram Moolenaarb2658a12016-04-26 17:16:24 +020027 if sys.argv[1].startswith("quit"):
28 sys.exit(0)
Bram Moolenaar6463ca22016-02-13 17:04:46 +010029
30 while True:
31 typed = sys.stdin.readline()
32 if typed.startswith("quit"):
33 print("Goodbye!")
34 sys.stdout.flush()
35 break
Bram Moolenaarc25558b2016-03-03 21:02:23 +010036 if typed.startswith("echo "):
Bram Moolenaar6463ca22016-02-13 17:04:46 +010037 print(typed[5:-1])
38 sys.stdout.flush()
Bram Moolenaar88989cc2017-02-06 21:56:09 +010039 if typed.startswith("echosplit "):
40 for part in typed[10:-1].split('|'):
41 sys.stdout.write(part)
42 sys.stdout.flush()
43 time.sleep(0.05)
Bram Moolenaare98d1212016-03-08 15:37:41 +010044 if typed.startswith("double "):
Bram Moolenaar9a6e33a2016-02-16 19:25:12 +010045 print(typed[7:-1] + "\nAND " + typed[7:-1])
46 sys.stdout.flush()
Bram Moolenaarbbe8d912016-06-05 16:10:57 +020047 if typed.startswith("split "):
48 print(typed[6:-1], end='')
49 sys.stdout.flush()
50 time.sleep(0.05)
51 print(typed[6:-1], end='')
52 sys.stdout.flush()
53 time.sleep(0.05)
54 print(typed[6:-1])
55 sys.stdout.flush()
Bram Moolenaare98d1212016-03-08 15:37:41 +010056 if typed.startswith("echoerr "):
57 print(typed[8:-1], file=sys.stderr)
58 sys.stderr.flush()
59 if typed.startswith("doubleerr "):
60 print(typed[10:-1] + "\nAND " + typed[10:-1], file=sys.stderr)
61 sys.stderr.flush()
Bram Moolenaar24058382019-01-24 23:11:49 +010062 if typed.startswith("XXX"):
63 print(typed, end='')
64 sys.stderr.flush()
65 break
Bram Moolenaar6463ca22016-02-13 17:04:46 +010066