This commit is contained in:
Kovid Goyal 2012-01-07 11:46:04 +05:30
parent 0312261cc5
commit 446eb08a55

View File

@ -6,7 +6,7 @@ __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
import os, cPickle, re, shutil, marshal, zipfile, glob, subprocess, time import os, cPickle, re, shutil, marshal, zipfile, glob, time
from zlib import compress from zlib import compress
from setup import Command, basenames, __appname__ from setup import Command, basenames, __appname__
@ -35,6 +35,8 @@ class Coffee(Command): # {{{
help='Display the generated javascript') help='Display the generated javascript')
def run(self, opts): def run(self, opts):
from calibre.utils.coffeescript import compile_coffeescript
self.compiler = compile_coffeescript
self.do_coffee_compile(opts) self.do_coffee_compile(opts)
if opts.watch: if opts.watch:
try: try:
@ -61,20 +63,24 @@ class Coffee(Command): # {{{
if self.newer(js, x): if self.newer(js, x):
print ('\t%sCompiling %s'%(time.strftime('[%H:%M:%S] ') if print ('\t%sCompiling %s'%(time.strftime('[%H:%M:%S] ') if
timestamp else '', os.path.basename(x))) timestamp else '', os.path.basename(x)))
try: with open(x, 'rb') as f:
subprocess.check_call(['coffee', '-c', '-o', dest, x]) cs, errs = self.compiler(f.read())
except: for line in errs:
print (line)
if cs and not errs:
with open(js, 'wb') as f:
f.write(cs.encode('utf-8'))
if opts.show_js:
self.show_js(js)
print ('#'*80)
print ('#'*80)
else:
print ('\n\tCompilation of %s failed'%os.path.basename(x)) print ('\n\tCompilation of %s failed'%os.path.basename(x))
if ignore_errors: if ignore_errors:
with open(js, 'wb') as f: with open(js, 'wb') as f:
f.write('# Compilation from coffeescript failed') f.write('# Compilation from coffeescript failed')
else: else:
raise SystemExit(1) raise SystemExit(1)
else:
if opts.show_js:
self.show_js(js)
print ('#'*80)
print ('#'*80)
def clean(self): def clean(self):
for toplevel, dest in self.COFFEE_DIRS.iteritems(): for toplevel, dest in self.COFFEE_DIRS.iteritems():