blob: 332501d82c007e25f2cda5e4afb60b2846971e97 [file] [log] [blame]
Guido van Rossum18468821994-06-20 07:49:28 +00001# This is about all it requires to write a wish shell in Python!
2
Jack Jansen10d0f8f1995-10-23 14:36:05 +00003import _tkinter
Guido van Rossum55618ef1995-09-07 19:44:48 +00004import os
Neal Norwitzce96f692006-03-17 06:49:51 +00005import sys
Guido van Rossum18468821994-06-20 07:49:28 +00006
Georg Brandlf19ff1e2010-10-26 10:39:14 +00007tk = _tkinter.create(os.environ['DISPLAY'], 'wish', 'Tk', 1, 1)
Guido van Rossum18468821994-06-20 07:49:28 +00008tk.call('update')
9
10cmd = ''
11
Georg Brandlf19ff1e2010-10-26 10:39:14 +000012while True:
13 if cmd:
14 prompt = ''
15 else:
16 prompt = '% '
Tim Peters182b5ac2004-07-18 06:16:08 +000017 try:
Neal Norwitzce96f692006-03-17 06:49:51 +000018 sys.stdout.write(prompt)
19 sys.stdout.flush()
20 line = sys.stdin.readline()
Georg Brandlf19ff1e2010-10-26 10:39:14 +000021 if not line:
22 break
Tim Peters182b5ac2004-07-18 06:16:08 +000023 except EOFError:
24 break
Georg Brandlf19ff1e2010-10-26 10:39:14 +000025 cmd += line
Tim Peters182b5ac2004-07-18 06:16:08 +000026 if tk.getboolean(tk.call('info', 'complete', cmd)):
27 tk.record(line)
28 try:
29 result = tk.call('eval', cmd)
Guido van Rossumb940e112007-01-10 16:19:56 +000030 except _tkinter.TclError as msg:
Collin Winter6f2df4d2007-07-17 20:59:35 +000031 print('TclError:', msg)
Tim Peters182b5ac2004-07-18 06:16:08 +000032 else:
Collin Winter6f2df4d2007-07-17 20:59:35 +000033 if result: print(result)
Tim Peters182b5ac2004-07-18 06:16:08 +000034 cmd = ''