mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Remove no longer needed cruft from serve_coffee
This commit is contained in:
parent
41a31b4c48
commit
7a6963dac3
@ -12,7 +12,7 @@ Utilities to help with developing coffeescript based apps.
|
||||
A coffeescript compiler and a simple web server that automatically serves
|
||||
coffeescript files as javascript.
|
||||
'''
|
||||
import sys, traceback, importlib, io
|
||||
import sys, traceback, io
|
||||
if sys.version_info.major > 2:
|
||||
print('This script is not Python 3 compatible. Run it with Python 2',
|
||||
file=sys.stderr)
|
||||
@ -24,43 +24,15 @@ from SimpleHTTPServer import SimpleHTTPRequestHandler
|
||||
|
||||
from PyQt4.Qt import QCoreApplication, QScriptEngine, QScriptValue
|
||||
|
||||
# Infrastructure {{{
|
||||
def import_from_calibre(mod):
|
||||
try:
|
||||
return importlib.import_module(mod)
|
||||
except ImportError:
|
||||
import init_calibre
|
||||
init_calibre
|
||||
return importlib.import_module(mod)
|
||||
|
||||
_store_app = gui_thread = None
|
||||
def fork_job(*args, **kwargs):
|
||||
try:
|
||||
return import_from_calibre('calibre.utils.ipc.simple_worker').fork_job(*args,
|
||||
**kwargs)
|
||||
except ImportError:
|
||||
# We aren't running in calibre
|
||||
import subprocess
|
||||
raw, filename = kwargs['args']
|
||||
cs = ''
|
||||
try:
|
||||
p = subprocess.Popen([sys.executable, __file__, 'compile', '-'],
|
||||
stdin=subprocess.PIPE, stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE)
|
||||
if isinstance(raw, unicode):
|
||||
raw = raw.encode('utf-8')
|
||||
stdout, stderr = p.communicate(raw)
|
||||
cs = stdout.decode('utf-8')
|
||||
errors = [stderr]
|
||||
except:
|
||||
errors = [traceback.format_exc()]
|
||||
|
||||
return {'result':(cs, errors)}
|
||||
|
||||
# }}}
|
||||
|
||||
class Compiler(QScriptEngine): # {{{
|
||||
|
||||
'''
|
||||
You can use this class in any thread, but make sure you instantiate it in
|
||||
the main thread. Alternatively, construct a QCoreApplication in the main
|
||||
thread, after which you can instantiate this class and use it in any
|
||||
thread.
|
||||
'''
|
||||
|
||||
def __init__(self):
|
||||
if QCoreApplication.instance() is None:
|
||||
self.__app_ = QCoreApplication([])
|
||||
@ -87,27 +59,11 @@ class Compiler(QScriptEngine): # {{{
|
||||
return '', [unicode(res.toString())]
|
||||
return unicode(res.toString()), []
|
||||
|
||||
def forked_compile(raw, fname):
|
||||
# Entry point for the compile worker
|
||||
try:
|
||||
ans, errors = Compiler()(raw, fname)
|
||||
except:
|
||||
ans, errors = '', [traceback.format_exc()]
|
||||
return ans, errors
|
||||
|
||||
|
||||
# }}}
|
||||
|
||||
def compile_coffeescript(raw, filename=None):
|
||||
try:
|
||||
cs, errors = fork_job('calibre.utils.serve_coffee',
|
||||
'forked_compile', args=(raw, filename), timeout=5,
|
||||
no_output=True)['result']
|
||||
except Exception as e:
|
||||
cs = None
|
||||
errors = [getattr(e, 'orig_tb', traceback.format_exc())]
|
||||
|
||||
return cs, errors
|
||||
return Compiler()(raw, filename)
|
||||
|
||||
class HTTPRequestHandler(SimpleHTTPRequestHandler): # {{{
|
||||
'''
|
||||
@ -284,7 +240,7 @@ class Handler(HTTPRequestHandler): # {{{
|
||||
mtime = time.time()
|
||||
with open(src, 'rb') as f:
|
||||
raw = f.read()
|
||||
cs, errors = compile_coffeescript(raw, src)
|
||||
cs, errors = self.compiler(raw, src)
|
||||
for line in errors:
|
||||
print(line, file=sys.stderr)
|
||||
if not cs:
|
||||
@ -318,6 +274,7 @@ class Server(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer): # {{{
|
||||
|
||||
def serve(resources={}, port=8000, host='0.0.0.0'):
|
||||
Handler.special_resources = resources
|
||||
Handler.compiler = Compiler()
|
||||
httpd = Server((host, port), Handler)
|
||||
print('serving %s at %s:%d with PID=%d'%(os.getcwdu(), host, port, os.getpid()))
|
||||
try:
|
||||
|
Loading…
x
Reference in New Issue
Block a user