Skip to content

Commit 692da8d

Browse files
committed
First draft.
1 parent 905da70 commit 692da8d

File tree

4 files changed

+111
-0
lines changed

4 files changed

+111
-0
lines changed

examples/debug.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/usr/bin/env python3.6
2+
# coding=utf-8
3+
import json
4+
5+
from qutescript import qutescript
6+
7+
8+
@qutescript
9+
def dump_to_log(request):
10+
with open('qutescript.debug.log', 'a') as logfile:
11+
line = json.dumps(request.dump())
12+
logfile.writelines([line])
13+
14+
if __name__ == '__main__':
15+
dump_to_log()

src/qutescript/__init__.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,10 @@
11
__version__ = "0.1.0"
2+
3+
from .decorators import qutescript
4+
from .request import Request, build_request
5+
6+
__all__ = [
7+
'build_request',
8+
'qutescript',
9+
'Request',
10+
]

src/qutescript/decorators.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# coding=utf-8
2+
3+
import sys
4+
5+
import os
6+
7+
from .request import build_request
8+
9+
log_file_path = './qutescript.log'
10+
11+
12+
def write_log(message, file_path=None):
13+
file_path = file_path or log_file_path
14+
file_path = os.path.abspath(os.path.expanduser(file_path))
15+
with open(file_path, 'a') as logfile:
16+
logfile.writelines([message])
17+
18+
19+
def qutescript(func):
20+
def wrapper():
21+
request = build_request()
22+
command = func(request)
23+
if not command:
24+
return
25+
if not request.fifo:
26+
write_log('ERROR: userscript returned command: {}, '
27+
'but QUTE_FIFO was not found in passed environment.\n'
28+
'Try: :spawn --userscript /path/to/script ?')
29+
sys.exit(1)
30+
with open(request.fifo, 'w') as fifo:
31+
fifo.write('{}\n'.format(command))
32+
33+
return wrapper

src/qutescript/request.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# coding=utf-8
2+
3+
4+
class Request(object):
5+
def __init__(self):
6+
self.mode = None
7+
self.user_agent = None
8+
self.fifo = None
9+
self.html = None
10+
self.text = None
11+
self.config_dir = None
12+
self.data_dir = None
13+
self.download_dir = None
14+
self.commandline_text = None
15+
self.url = None
16+
self.title = None
17+
self.selected_text = None
18+
self.selected_html = None
19+
20+
def dump(self):
21+
return {
22+
'mode': self.mode,
23+
'user_agent': self.user_agent,
24+
'fifo': self.fifo,
25+
'html': self.html,
26+
'text': self.text,
27+
'config_dir': self.config_dir,
28+
'data_dir': self.data_dir,
29+
'download_dir': self.download_dir,
30+
'commandline_text': self.commandline_text,
31+
'url': self.url,
32+
'title': self.title,
33+
'selected_text': self.selected_text,
34+
'selected_html': self.selected_html,
35+
}
36+
37+
38+
def build_request():
39+
import os
40+
request = Request()
41+
request.mode = os.getenv('QUTE_MODE')
42+
request.user_agent = os.getenv('QUTE_USER_AGENT')
43+
request.fifo = os.getenv('QUTE_FIFO')
44+
request.html = os.getenv('QUTE_HTML')
45+
request.text = os.getenv('QUTE_TEXT')
46+
request.config_dir = os.getenv('QUTE_CONFIG_DIR')
47+
request.data_dir = os.getenv('QUTE_DATA_DIR')
48+
request.download_dir = os.getenv('QUTE_DOWNLOAD_DIR')
49+
request.commandline_text = os.getenv('QUTE_COMMANDLINE_TEXT')
50+
request.url = os.getenv('QUTE_URL')
51+
request.title = os.getenv('QUTE_TITLE')
52+
request.selected_text = os.getenv('QUTE_SELECTED_TEXT')
53+
request.selected_html = os.getenv('QUTE_SELECTED_HTML')
54+
return request

0 commit comments

Comments
 (0)