added global/local namespace dicts for exec; added traceback print; return early for /
This commit is contained in:

parent
27ec3e5b9a
commit
108953a846
8
pier.py
8
pier.py
@ -27,12 +27,16 @@ from io import StringIO
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import shlex
|
import shlex
|
||||||
|
import traceback
|
||||||
import http.server
|
import http.server
|
||||||
import socketserver
|
import socketserver
|
||||||
|
|
||||||
|
|
||||||
URL_SPACE = "%20"
|
URL_SPACE = "%20"
|
||||||
|
|
||||||
|
exec_globals = {}
|
||||||
|
exec_locals = {}
|
||||||
|
|
||||||
|
|
||||||
class ScriptServer(http.server.SimpleHTTPRequestHandler):
|
class ScriptServer(http.server.SimpleHTTPRequestHandler):
|
||||||
|
|
||||||
@ -42,6 +46,7 @@ class ScriptServer(http.server.SimpleHTTPRequestHandler):
|
|||||||
|
|
||||||
if not args:
|
if not args:
|
||||||
super().do_GET()
|
super().do_GET()
|
||||||
|
return
|
||||||
|
|
||||||
scr = args[0]
|
scr = args[0]
|
||||||
|
|
||||||
@ -78,12 +83,13 @@ def run_script(fn, args):
|
|||||||
code = open_script(fn)
|
code = open_script(fn)
|
||||||
old_sys_argv, sys.argv = sys.argv, args
|
old_sys_argv, sys.argv = sys.argv, args
|
||||||
try:
|
try:
|
||||||
exec(code)
|
exec(code, exec_globals, exec_locals)
|
||||||
except BaseException as e: # need to catch SystemExit etc. as well
|
except BaseException as e: # need to catch SystemExit etc. as well
|
||||||
print("_" * 80)
|
print("_" * 80)
|
||||||
tn = type(e).__name__
|
tn = type(e).__name__
|
||||||
msg = f"{tn}: {e}"
|
msg = f"{tn}: {e}"
|
||||||
print(msg, file=sys.stderr)
|
print(msg, file=sys.stderr)
|
||||||
|
traceback.print_exc()
|
||||||
sys.argv = old_sys_argv
|
sys.argv = old_sys_argv
|
||||||
return sio.getvalue()
|
return sio.getvalue()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user