]>
jfr.im git - irc/quakenet/qwebirc.git/blob - bin/compile.py
5 import pages
, os
, subprocess
, pagegen
, shutil
, sys
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
47 f
= open(os
.path
.join(prefix
, "static", suffix
, output
), "wb")
52 def merge_files(output
, files
, root_path
=lambda x
: x
):
53 f
= open(output
, "wb")
56 f2
= open(root_path(x
), "rb")
61 def main(outputdir
=".", produce_debug
=True):
62 ID
= pagegen
.gethgid()
64 pagegen
.main(outputdir
, produce_debug
=produce_debug
)
66 coutputdir
= os
.path
.join(outputdir
, "compiled")
73 os
.mkdir(os
.path
.join(outputdir
, "static", "css"))
77 #jmerge_files(outputdir, "js", "qwebirc", pages.DEBUG_BASE, lambda x: os.path.join("js", x + ".js"))
79 for uiname
, value
in pages
.UIs
.items():
80 csssrc
= pagegen
.csslist(uiname
, True)
81 jmerge_files(outputdir
, "css", uiname
+ "-" + ID
, csssrc
)
82 shutil
.copy2(os
.path
.join(outputdir
, "static", "css", uiname
+ "-" + ID
+ ".css"), os
.path
.join(outputdir
, "static", "css", uiname
+ ".css"))
83 #jmerge_files(outputdir, "js", uiname, value["uifiles"], lambda x: os.path.join("js", "ui", "frontends", x + ".js"))
86 for y
in pages
.JS_BASE
:
87 alljs
.append(os
.path
.join("static", "js", y
+ ".js"))
88 for y
in value
.get("buildextra", []):
89 alljs
.append(os
.path
.join("static", "js", "%s.js" % y
))
90 for y
in pages
.DEBUG_BASE
:
91 alljs
.append(os
.path
.join("js", y
+ ".js"))
92 for y
in value
["uifiles"]:
93 alljs
.append(os
.path
.join("js", "ui", "frontends", y
+ ".js"))
94 jmerge_files(outputdir
, "js", uiname
+ "-" + ID
, alljs
)
98 f
= open(".compiled", "w")
103 f
= open(".compiled", "r")
110 f
= open(os
.path
.join("bin", ".compiled"), "r")
122 print >>sys
.stderr
, "error: not yet compiled, run compile.py first."
125 if __name__
== "__main__":