]>
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.4.2.jar", src
], stdout
=subprocess
.PIPE
, shell
=True)
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")
53 f
.write("QWEBIRC_DEBUG = false;")
55 if kwargs
.get("file_prefix"):
56 f
.write(kwargs
.get("file_prefix"))
61 def merge_files(output
, files
, root_path
=lambda x
: x
):
62 f
= open(output
, "wb")
65 f2
= open(root_path(x
), "rb")
66 f
.write(f2
.read() + "\n")
70 def main(outputdir
=".", produce_debug
=True):
71 ID
= pagegen
.gethgid()
73 pagegen
.main(outputdir
, produce_debug
=produce_debug
)
75 coutputdir
= os
.path
.join(outputdir
, "compiled")
82 os
.mkdir(os
.path
.join(outputdir
, "static", "css"))
86 #jmerge_files(outputdir, "js", "qwebirc", pages.DEBUG_BASE, lambda x: os.path.join("js", x + ".js"))
88 for uiname
, value
in pages
.UIs
.items():
89 csssrc
= pagegen
.csslist(uiname
, True)
90 jmerge_files(outputdir
, "css", uiname
+ "-" + ID
, csssrc
)
91 shutil
.copy2(os
.path
.join(outputdir
, "static", "css", uiname
+ "-" + ID
+ ".css"), os
.path
.join(outputdir
, "static", "css", uiname
+ ".css"))
93 mcssname
= os
.path
.join("css", uiname
+ ".mcss")
94 if os
.path
.exists(mcssname
):
95 mcssdest
= os
.path
.join(outputdir
, "static", "css", uiname
+ ".mcss")
96 shutil
.copy2(mcssname
, mcssdest
)
97 shutil
.copy2(mcssdest
, os
.path
.join(outputdir
, "static", "css", uiname
+ "-" + ID
+ ".mcss"))
99 #jmerge_files(outputdir, "js", uiname, value["uifiles"], lambda x: os.path.join("js", "ui", "frontends", x + ".js"))
102 for y
in pages
.JS_BASE
:
103 alljs
.append(os
.path
.join("static", "js", y
+ ".js"))
104 for y
in value
.get("buildextra", []):
105 alljs
.append(os
.path
.join("static", "js", "%s.js" % y
))
106 for y
in pages
.DEBUG_BASE
:
107 alljs
.append(os
.path
.join("js", y
+ ".js"))
108 for y
in value
["uifiles"]:
109 alljs
.append(os
.path
.join("js", "ui", "frontends", y
+ ".js"))
110 jmerge_files(outputdir
, "js", uiname
+ "-" + ID
, alljs
, file_prefix
="QWEBIRC_BUILD=\"" + ID
+ "\";\n")
114 f
= open(".compiled", "w")
119 f
= open(".compiled", "r")
126 f
= open(os
.path
.join("bin", ".compiled"), "r")
138 print >>sys
.stderr
, "error: not yet compiled, run compile.py first."
141 if __name__
== "__main__":