class jsDependencyBuilder: @staticmethod def read_code(js_path): try: f = open(js_path) try: code = f.read() finally: f.close except Exception, e: raise e return code @staticmethod def read_imports(code): import re p = re.compile('\$import\(\' (?P [^)]*)\' \)', re.VERBOSE) return p.findall(code) @staticmethod def build_dependency(jsdir,modname,depends= set()): import webnotes.utils.jsnamespace as jsn js_path = jsn.jsNamespace.modname_to_filename(modname,jsdir) code = jsDependencyBuilder.read_code(js_path) curdepend = jsDependencyBuilder.read_imports(code) for i in curdepend: if i not in depends: depends.add(i) depends = depends.union( jsDependencyBuilder.build_dependency(jsdir,i,depends)) return depends def build_dependency_from_file(modname,depends= set()): # TODO STUB to read dependency from dependency tree stored in file return jsDependencyBuilder.build_dependency(modname)