]>
jfr.im git - irc/quakenet/qwebirc.git/blob - bin/compile.py
2 import pages
, os
, subprocess
, pagegen
, shutil
, sys
4 COPYRIGHT
= open("js/copyright.js", "rb").read()
6 class MinifyException(Exception):
11 p
= subprocess
.Popen(["java", "-jar", "bin/yuicompressor-2.3.5.jar", src
], stdout
=subprocess
.PIPE
)
13 if hasattr(e
, "errno") and e
.errno
== 2:
14 raise MinifyException
, "unable to run java"
16 data
= p
.communicate()[0]
18 raise MinifyException
, "an error occured"
21 JAVA_WARNING_SURPRESSED
= False
22 def jmerge_files(prefix
, suffix
, output
, files
, *args
):
24 output
= output
+ "." + suffix
25 o
= os
.path
.join(prefix
, "compiled", output
)
26 merge_files(o
, files
, *args
)
29 compiled
= open(o
, "rb").read()
32 except MinifyException
, e
:
33 global JAVA_WARNING_SURPRESSED
34 if not JAVA_WARNING_SURPRESSED
:
35 JAVA_WARNING_SURPRESSED
= True
36 print >>sys
.stderr
, "warning: minify: %s (not minifying -- javascript will be HUGE)." % e
39 f
= open(os
.path
.join(prefix
, "static", suffix
, output
), "wb")
44 def merge_files(output
, files
, root_path
=lambda x
: x
):
45 f
= open(output
, "wb")
48 f2
= open(root_path(x
), "rb")
53 def main(outputdir
=".", produce_debug
=True):
54 ID
= pagegen
.gethgid()
56 pagegen
.main(outputdir
, produce_debug
=produce_debug
)
58 coutputdir
= os
.path
.join(outputdir
, "compiled")
65 os
.mkdir(os
.path
.join(outputdir
, "static", "css"))
69 #jmerge_files(outputdir, "js", "qwebirc", pages.DEBUG_BASE, lambda x: os.path.join("js", x + ".js"))
71 for uiname
, value
in pages
.UIs
.items():
72 csssrc
= pagegen
.csslist(uiname
, True)
73 jmerge_files(outputdir
, "css", uiname
+ "-" + ID
, csssrc
)
74 shutil
.copy2(os
.path
.join(outputdir
, "static", "css", uiname
+ "-" + ID
+ ".css"), os
.path
.join(outputdir
, "static", "css", uiname
+ ".css"))
75 #jmerge_files(outputdir, "js", uiname, value["uifiles"], lambda x: os.path.join("js", "ui", "frontends", x + ".js"))
78 for y
in pages
.JS_BASE
:
79 alljs
.append(os
.path
.join("static", "js", y
+ ".js"))
80 for y
in value
.get("buildextra", []):
81 alljs
.append(os
.path
.join("static", "js", "%s.js" % y
))
82 for y
in pages
.DEBUG_BASE
:
83 alljs
.append(os
.path
.join("js", y
+ ".js"))
84 for y
in value
["uifiles"]:
85 alljs
.append(os
.path
.join("js", "ui", "frontends", y
+ ".js"))
86 jmerge_files(outputdir
, "js", uiname
+ "-" + ID
, alljs
)
90 if __name__
== "__main__":