def __init__(self, session, assetManager=None, compressionLevel=1, formattingLevel=0): Console.info("Initializing OutputManager...") Console.indent() Console.info("Formatting Level: %s", formattingLevel) Console.info("Compression Level: %s", compressionLevel) self.__session = session self.__assetManager = assetManager self.__fileManager = FileManager(session) self.__scriptOptimization = Optimization() self.__compressGeneratedCode = False self.__kernelClasses = [] if compressionLevel > 0: self.__scriptOptimization.enable("variables") self.__scriptOptimization.enable("declarations") self.__compressGeneratedCode = True if compressionLevel > 1: self.__scriptOptimization.enable("blocks") self.__scriptOptimization.enable("privates") self.__scriptFormatting = Formatting() if formattingLevel > 0: self.__scriptFormatting.enable("semicolon") self.__scriptFormatting.enable("comma") Console.outdent()
def cacheManifest(session, startClassName, scripts=["script/application-%s.js"], htmlfile="index.html", kernel="script/kernel.js", ignoreAssets=False): # Check for new jasy replacement system (1.1.0-rc4) if session.expandFileName("{{id}}") != "{{id}}": PREFIX = "{{prefix}}" HASH = "{{id}}" else: PREFIX = "$prefix" HASH = "$permutation" timestamp = time.strftime("%Y-%m-%d %H:%M:%S") appcache = """CACHE MANIFEST # Jasy AppCache Manifest file # Version: {version} CACHE: {htmlfile} {kernel} {scripts} {assets} NETWORK: *""" htmlcache = '<!DOCTYPE html><html manifest="%s"></html>' assetManager = AssetManager(session).addBuildProfile() outputManager = OutputManager(session, assetManager) fileManager = FileManager(session) # Create an application cache file for each permutation for permutation in session.permutate(): if ignoreAssets: assets = [] else: classes = Resolver(session).addClassName( startClassName).getSortedClasses() assetConfig = json.loads(assetManager.export(classes)) assets = filenamesFromAsset("", assetConfig["assets"], assetConfig["profiles"]) # Set options if hasattr(permutation, "getId"): checksum = permutation.getId() else: checksum = session.expandFileName( HASH) #instead of permutation.getChecksum() scriptFiles = [] for script in scripts: scriptFiles.append(script % checksum) manifestFilename = "appcache-%s.manifest" % (checksum) fileManager.writeFile( PREFIX + "/" + manifestFilename, appcache.format(version=timestamp, htmlfile=htmlfile, kernel=kernel, scripts="\n".join(scriptFiles), assets="\n".join(assets))) fileManager.writeFile(PREFIX + "/index-%s.html" % (checksum), htmlcache % manifestFilename)