seitime-frappe/cgi-bin/compilejs.py
2011-06-13 17:10:36 +05:30

73 lines
1.6 KiB
Python

class wnJSCompiler:
@staticmethod
def concate_files_in_dir(path,dest):
"""
Concatenates all files in a directory
"""
import os
allfiles = []
dirname = path
l = os.listdir(path)
for i in l:
if os.path.isfile(os.path.join(dirname,i)):
allfiles.append(os.path.join(dirname,i))
fout = open(dest,'w')
for filename in allfiles:
f = open(filename)
fout.write(f.read())
f.close
fout.close
@staticmethod
def getsubs(path):
"""
gets all the sub directories of a directory (recursive)
"""
import os
subs = []
for root, subd, files in os.walk(path):
for i in subd:
subs.append(os.path.join(root,i))
return subs
@staticmethod
def compilejs(path):
"""
Compiles the js tree for ondemand import
"""
if not wnJSCompiler.is_changed(path):
return
import os
import webnotes.utils.jsnamespace as jsn
subs = wnJSCompiler.getsubs(path)
for subdir in subs:
modname = jsn.jsNamespace.getmodname(subdir)
wnJSCompiler.concate_files_in_dir(subdir,os.path.join(subdir, modname))
wnJSCompiler.minifyjs(os.path.join(subdir, modname))
@staticmethod
def is_changed(path):
#compare new timestamps with the ones stored in file
from webnotes.utils import jstimestamp
try:
frm_file = jstimestamp.generateTimestamp.read_ts_from_file(path)
newts = jstimestamp.generateTimestamp.gents(path)
except IOError:
return True
if frm_file == newts:
return False
else:
return True
@staticmethod
def minifyjs(modpath):
"""
Stub to minify js
"""
pass
if __name__=="__main__":
a = wnJSCompiler()
print a.compilejs('../js/wntest')