]>
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
, **kwargs
):
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")
54 if kwargs
.get("file_prefix"):
55 f
.write(kwargs
.get("file_prefix"))
60 def merge_files(output
, files
, root_path
=lambda x
: x
):
61 f
= open(output
, "wb")
64 f2
= open(root_path(x
), "rb")
65 f
.write(f2
.read() + "\n")
69 def main(outputdir
=".", produce_debug
=True):
70 ID
= pagegen
.gethgid()
72 pagegen
.main(outputdir
, produce_debug
=produce_debug
)
74 coutputdir
= os
.path
.join(outputdir
, "compiled")
81 os
.mkdir(os
.path
.join(outputdir
, "static", "css"))
85 #jmerge_files(outputdir, "js", "qwebirc", pages.DEBUG_BASE, lambda x: os.path.join("js", x + ".js"))
87 for uiname
, value
in pages
.UIs
.items():
88 csssrc
= pagegen
.csslist(uiname
, True)
89 jmerge_files(outputdir
, "css", uiname
+ "-" + ID
, csssrc
)
90 shutil
.copy2(os
.path
.join(outputdir
, "static", "css", uiname
+ "-" + ID
+ ".css"), os
.path
.join(outputdir
, "static", "css", uiname
+ ".css"))
92 mcssname
= os
.path
.join("css", uiname
+ ".mcss")
93 if os
.path
.exists(mcssname
):
94 mcssdest
= os
.path
.join(outputdir
, "static", "css", uiname
+ ".mcss")
95 shutil
.copy2(mcssname
, mcssdest
)
96 shutil
.copy2(mcssdest
, os
.path
.join(outputdir
, "static", "css", uiname
+ "-" + ID
+ ".mcss"))
98 #jmerge_files(outputdir, "js", uiname, value["uifiles"], lambda x: os.path.join("js", "ui", "frontends", x + ".js"))
101 for y
in pages
.JS_BASE
:
102 alljs
.append(os
.path
.join("static", "js", y
+ ".js"))
103 for y
in value
.get("buildextra", []):
104 alljs
.append(os
.path
.join("static", "js", "%s.js" % y
))
105 for y
in pages
.DEBUG_BASE
:
106 alljs
.append(os
.path
.join("js", y
+ ".js"))
107 for y
in value
["uifiles"]:
108 alljs
.append(os
.path
.join("js", "ui", "frontends", y
+ ".js"))
109 jmerge_files(outputdir
, "js", uiname
+ "-" + ID
, alljs
, file_prefix
="QWEBIRC_BUILD=\"" + ID
+ "\";\n")
113 f
= open(".compiled", "w")
118 f
= open(".compiled", "r")
125 f
= open(os
.path
.join("bin", ".compiled"), "r")
137 print >>sys
.stderr
, "error: not yet compiled, run compile.py first."
140 if __name__
== "__main__":