]>
jfr.im git - irc/quakenet/qwebirc.git/blob - bin/compile.py
5 import pages
, os
, subprocess
, pagegen
, shutil
, sys
, time
7 COPYRIGHT
= open("js/copyright.js", "rb").read()
9 class MinifyException(Exception):
14 p
= subprocess
.Popen(["java", "-jar", "bin/yuicompressor-2.3.5.jar", src
], stdout
=subprocess
.PIPE
)
16 if hasattr(e
, "errno") and e
.errno
== 2:
17 raise MinifyException
, "unable to run java"
19 data
= p
.communicate()[0]
21 raise MinifyException
, "an error occured"
24 JAVA_WARNING_SURPRESSED
= False
25 def jmerge_files(prefix
, suffix
, output
, files
, *args
):
27 output
= output
+ "." + suffix
28 o
= os
.path
.join(prefix
, "compiled", output
)
29 merge_files(o
, files
, *args
)
34 except MinifyException
, e
:
35 global JAVA_WARNING_SURPRESSED
36 if not JAVA_WARNING_SURPRESSED
:
37 JAVA_WARNING_SURPRESSED
= True
38 print >>sys
.stderr
, "warning: minify: %s (not minifying -- javascript will be HUGE)." % e
48 time
.sleep(1) # windows sucks
51 f
= open(os
.path
.join(prefix
, "static", suffix
, output
), "wb")
56 def merge_files(output
, files
, root_path
=lambda x
: x
):
57 f
= open(output
, "wb")
60 f2
= open(root_path(x
), "rb")
65 def main(outputdir
=".", produce_debug
=True):
66 ID
= pagegen
.gethgid()
68 pagegen
.main(outputdir
, produce_debug
=produce_debug
)
70 coutputdir
= os
.path
.join(outputdir
, "compiled")
77 os
.mkdir(os
.path
.join(outputdir
, "static", "css"))
81 #jmerge_files(outputdir, "js", "qwebirc", pages.DEBUG_BASE, lambda x: os.path.join("js", x + ".js"))
83 for uiname
, value
in pages
.UIs
.items():
84 csssrc
= pagegen
.csslist(uiname
, True)
85 jmerge_files(outputdir
, "css", uiname
+ "-" + ID
, csssrc
)
86 shutil
.copy2(os
.path
.join(outputdir
, "static", "css", uiname
+ "-" + ID
+ ".css"), os
.path
.join(outputdir
, "static", "css", uiname
+ ".css"))
87 #jmerge_files(outputdir, "js", uiname, value["uifiles"], lambda x: os.path.join("js", "ui", "frontends", x + ".js"))
90 for y
in pages
.JS_BASE
:
91 alljs
.append(os
.path
.join("static", "js", y
+ ".js"))
92 for y
in value
.get("buildextra", []):
93 alljs
.append(os
.path
.join("static", "js", "%s.js" % y
))
94 for y
in pages
.DEBUG_BASE
:
95 alljs
.append(os
.path
.join("js", y
+ ".js"))
96 for y
in value
["uifiles"]:
97 alljs
.append(os
.path
.join("js", "ui", "frontends", y
+ ".js"))
98 jmerge_files(outputdir
, "js", uiname
+ "-" + ID
, alljs
)
102 f
= open(".compiled", "w")
107 f
= open(".compiled", "r")
114 f
= open(os
.path
.join("bin", ".compiled"), "r")
126 print >>sys
.stderr
, "error: not yet compiled, run compile.py first."
129 if __name__
== "__main__":