From 692da8db2707c07af883cc2d92edf7d9d46351b7 Mon Sep 17 00:00:00 2001 From: Harshad Sharma Date: Fri, 16 Jun 2017 09:48:45 +0530 Subject: [PATCH] First draft. --- examples/debug.py | 15 ++++++++++ src/qutescript/__init__.py | 9 ++++++ src/qutescript/decorators.py | 33 ++++++++++++++++++++++ src/qutescript/request.py | 54 ++++++++++++++++++++++++++++++++++++ 4 files changed, 111 insertions(+) create mode 100755 examples/debug.py create mode 100644 src/qutescript/decorators.py create mode 100644 src/qutescript/request.py diff --git a/examples/debug.py b/examples/debug.py new file mode 100755 index 0000000..7ff1742 --- /dev/null +++ b/examples/debug.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python3.6 +# coding=utf-8 +import json + +from qutescript import qutescript + + +@qutescript +def dump_to_log(request): + with open('qutescript.debug.log', 'a') as logfile: + line = json.dumps(request.dump()) + logfile.writelines([line]) + +if __name__ == '__main__': + dump_to_log() diff --git a/src/qutescript/__init__.py b/src/qutescript/__init__.py index 3dc1f76..07ba289 100644 --- a/src/qutescript/__init__.py +++ b/src/qutescript/__init__.py @@ -1 +1,10 @@ __version__ = "0.1.0" + +from .decorators import qutescript +from .request import Request, build_request + +__all__ = [ + 'build_request', + 'qutescript', + 'Request', +] diff --git a/src/qutescript/decorators.py b/src/qutescript/decorators.py new file mode 100644 index 0000000..b6610e8 --- /dev/null +++ b/src/qutescript/decorators.py @@ -0,0 +1,33 @@ +# coding=utf-8 + +import sys + +import os + +from .request import build_request + +log_file_path = './qutescript.log' + + +def write_log(message, file_path=None): + file_path = file_path or log_file_path + file_path = os.path.abspath(os.path.expanduser(file_path)) + with open(file_path, 'a') as logfile: + logfile.writelines([message]) + + +def qutescript(func): + def wrapper(): + request = build_request() + command = func(request) + if not command: + return + if not request.fifo: + write_log('ERROR: userscript returned command: {}, ' + 'but QUTE_FIFO was not found in passed environment.\n' + 'Try: :spawn --userscript /path/to/script ?') + sys.exit(1) + with open(request.fifo, 'w') as fifo: + fifo.write('{}\n'.format(command)) + + return wrapper diff --git a/src/qutescript/request.py b/src/qutescript/request.py new file mode 100644 index 0000000..af96142 --- /dev/null +++ b/src/qutescript/request.py @@ -0,0 +1,54 @@ +# coding=utf-8 + + +class Request(object): + def __init__(self): + self.mode = None + self.user_agent = None + self.fifo = None + self.html = None + self.text = None + self.config_dir = None + self.data_dir = None + self.download_dir = None + self.commandline_text = None + self.url = None + self.title = None + self.selected_text = None + self.selected_html = None + + def dump(self): + return { + 'mode': self.mode, + 'user_agent': self.user_agent, + 'fifo': self.fifo, + 'html': self.html, + 'text': self.text, + 'config_dir': self.config_dir, + 'data_dir': self.data_dir, + 'download_dir': self.download_dir, + 'commandline_text': self.commandline_text, + 'url': self.url, + 'title': self.title, + 'selected_text': self.selected_text, + 'selected_html': self.selected_html, + } + + +def build_request(): + import os + request = Request() + request.mode = os.getenv('QUTE_MODE') + request.user_agent = os.getenv('QUTE_USER_AGENT') + request.fifo = os.getenv('QUTE_FIFO') + request.html = os.getenv('QUTE_HTML') + request.text = os.getenv('QUTE_TEXT') + request.config_dir = os.getenv('QUTE_CONFIG_DIR') + request.data_dir = os.getenv('QUTE_DATA_DIR') + request.download_dir = os.getenv('QUTE_DOWNLOAD_DIR') + request.commandline_text = os.getenv('QUTE_COMMANDLINE_TEXT') + request.url = os.getenv('QUTE_URL') + request.title = os.getenv('QUTE_TITLE') + request.selected_text = os.getenv('QUTE_SELECTED_TEXT') + request.selected_html = os.getenv('QUTE_SELECTED_HTML') + return request