diff --git a/src/qutescript/decorator.py b/src/qutescript/decorator.py index ada3e6a..a0a3710 100644 --- a/src/qutescript/decorator.py +++ b/src/qutescript/decorator.py @@ -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 diff --git a/src/qutescript/utils.py b/src/qutescript/utils.py index 151e2f0..79ae00c 100644 --- a/src/qutescript/utils.py +++ b/src/qutescript/utils.py @@ -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 = ['
'] + ['

{}

'.format(m or ' ') 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: