Use userscript name in generated temporary filename; better context

for debugging.
master
Harshad Sharma 7 years ago
parent 2f4d4de273
commit 666c3515f0

@ -3,6 +3,7 @@
import sys
import traceback
import os
from qutescript.utils import send_messages_to_browser
from .cli import main_cli, userscript_cli
@ -11,15 +12,16 @@ from .request import build_request
def qutescript(func):
def wrapper():
userscript_name = os.path.basename(sys.argv[0])
try:
main_cli()
except Exception as e:
send_messages_to_browser(traceback.format_exc(), 'Cannot execute cli handler')
send_messages_to_browser(traceback.format_exc(), 'Cannot execute cli handler', script_name=userscript_name)
sys.exit(1)
try:
request = build_request()
except Exception as e:
send_messages_to_browser(traceback.format_exc(), 'Cannot build request.')
send_messages_to_browser(traceback.format_exc(), 'Cannot build request.', script_name=userscript_name)
sys.exit(5)
try:
func_ = userscript_cli(func)
@ -27,13 +29,13 @@ def qutescript(func):
if not command:
return
except Exception as e:
send_messages_to_browser(traceback.format_exc(), 'Userscript error.')
send_messages_to_browser(traceback.format_exc(), 'Userscript error.', script_name=userscript_name)
sys.exit(10)
if not request.fifo:
message = ('ERROR: userscript returned command: {}, '
'but QUTE_FIFO was not found in passed environment.\n'
'Try: :spawn --userscript /path/to/script ?')
send_messages_to_browser(traceback.format_exc(), message)
send_messages_to_browser(traceback.format_exc(), message, script_name=userscript_name)
sys.exit(20)
try:
with open(request.fifo, 'w') as fifo:
@ -41,7 +43,7 @@ def qutescript(func):
except Exception as e:
send_messages_to_browser(
traceback.format_exc(),
'Cannot write to FIFO: {!r}'.format(request.fifo))
'Cannot write to FIFO: {!r}'.format(request.fifo), script_name=userscript_name)
sys.exit(30)
return wrapper

@ -15,7 +15,15 @@ def write_log(message, file_path=None):
logfile.writelines(record)
def send_messages_to_browser(*messages):
def cleanup_script_name(script_name):
if script_name:
script_name = script_name.replace('.', '_')
if not script_name.endswith('_'):
script_name = script_name + '_'
return script_name
def send_messages_to_browser(*messages, script_name: str = None):
"""
Write messages to a temporary file,
Attempt to open the file through FIFO in the browser.
@ -25,7 +33,9 @@ def send_messages_to_browser(*messages):
if not fifo:
return
out_lines = ['<html><body><pre>'] + ['<p>{}</p>'.format(m or '&nbsp;') for m in messages]
with tempfile.NamedTemporaryFile(mode='w', suffix='.html', delete=False) as trace_file:
script_name = cleanup_script_name(script_name)
prefix = 'qutescript_{}'.format((script_name or ''))
with tempfile.NamedTemporaryFile(mode='w', prefix=prefix, suffix='.html', delete=False) as trace_file:
trace_file.writelines(out_lines)
print('***', trace_file.name)
with open(fifo, 'w') as fifo_file:

Loading…
Cancel
Save