def build(session, config, cdnPrefix="asset", compressionLevel=2, formattingLevel=0, kernelName="unify.Kernel"): name = config.get("name") assetManager = AssetManager(session) outputManager = OutputManager(session, assetManager, compressionLevel, formattingLevel) fileManager = FileManager(session) session.setField("unify.application.namespace", name) # Assets assetManager.addBuildProfile(cdnPrefix) assetManager.deploy(Resolver(session).addClassName("%s.Application" % name).getIncludedClasses()) # Store loader script if jasy.__version__ < "1.1": outputManager.storeKernel("$prefix/script/kernel.js", classes=[kernelName]) else: outputManager.storeKernel("$prefix/script/kernel.js", kernelName) # Copy files from source fileManager.updateFile("source/index.html", "$prefix/index.html") # Process every possible permutation for permutation in session.permutate(): # Resolving dependencies resolver = Resolver(session).addClassName("%s.Application" % name) # Compressing classes outputManager.storeCompressed(resolver.getSortedClasses(), "$prefix/script/%s-$permutation.js" % name, "unify.core.Init.startUp();")
def source(session, config, kernelName="unify.Kernel"): # Check for new jasy replacement system (1.1.0-rc4) if session.expandFileName("{{id}}") != "{{id}}": PREFIX = "{{prefix}}" HASH = "{{id}}" else: PREFIX = "$prefix" HASH = "$permutation" name = config.get("name") assetManager = AssetManager(session) outputManager = OutputManager(session, assetManager, 0, 1) session.setField("unify.application.namespace", name) assetManager.addSourceProfile() if jasy.__version__ < "1.1": outputManager.storeKernel(PREFIX + "/script/kernel.js", classes=[kernelName]) else: outputManager.storeKernel(PREFIX + "/script/kernel.js", kernelName) for permutation in session.permutate(): # Resolving dependencies resolver = Resolver(session).addClassName("%s.Application" % name) # Building class loader outputManager.storeLoader( resolver.getSortedClasses(), (PREFIX + "/script/%s-" + HASH + ".js") % name, "unify.core.Init.startUp();" )
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)
def source(session, config, kernelName="unify.Kernel"): name = config.get("name") assetManager = AssetManager(session) outputManager = OutputManager(session, assetManager, 0, 1) session.setField("unify.application.namespace", name) assetManager.addSourceProfile() if jasy.__version__ < "1.1": outputManager.storeKernel("$prefix/script/kernel.js", classes=[kernelName]) else: outputManager.storeKernel("$prefix/script/kernel.js", kernelName) for permutation in session.permutate(): # Resolving dependencies resolver = Resolver(session).addClassName("%s.Application" % name) # Building class loader outputManager.storeLoader(resolver.getSortedClasses(), "$prefix/script/%s-$permutation.js" % name, "unify.core.Init.startUp();")
def build(session, config, cdnPrefix="asset", compressionLevel=2, formattingLevel=0, kernelName="unify.Kernel"): # Check for new jasy replacement system (1.1.0-rc4) if session.expandFileName("{{id}}") != "{{id}}": PREFIX = "{{prefix}}" HASH = "{{id}}" else: PREFIX = "$prefix" HASH = "$permutation" name = config.get("name") assetManager = AssetManager(session) outputManager = OutputManager(session, assetManager, compressionLevel, formattingLevel) fileManager = FileManager(session) session.setField("unify.application.namespace", name) # Assets assetManager.addBuildProfile(cdnPrefix) assetManager.deploy(Resolver(session).addClassName("%s.Application" % name).getIncludedClasses()) # Store loader script if jasy.__version__ < "1.1": outputManager.storeKernel(PREFIX + "/script/kernel.js", classes=[kernelName]) else: outputManager.storeKernel(PREFIX + "/script/kernel.js", kernelName) # Copy files from source fileManager.updateFile("source/index.html", PREFIX + "/index.html") # Process every possible permutation for permutation in session.permutate(): # Resolving dependencies resolver = Resolver(session).addClassName("%s.Application" % name) # Compressing classes outputManager.storeCompressed( resolver.getSortedClasses(), (PREFIX + "/script/%s-" + HASH + ".js") % name, "unify.core.Init.startUp();" )
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)