Example #1
0
        def compileAndWritePackage(package, compConf):
            def compiledFilename(compiled):
                hash_ = sha.getHash(compiled)[:12]
                fname = self._fileNameWithHash(script.baseScriptPath, hash_)
                return fname

            def compileAndAdd(compiledClasses, packageUris):
                compiled = compileClasses(compiledClasses, compOptions)
                filename = compiledFilename(compiled)
                self.writePackage(compiled, filename, script)
                filename = OsPath(os.path.basename(filename))
                shortUri = Uri(filename.toUri())
                packageUris.append("%s:%s" %
                                   ("__out__", shortUri.encodedValue()))

                return packageUris

            # ------------------------------------
            packageUris = []
            compiledClasses = []
            optimize = compConf.get("code/optimize", [])
            sourceFilter = ClassMatchList(compConf.get("code/except", []))
            compOptions = CompileOptions(optimize=optimize)

            ##
            # This somewhat overlaps with packageUrisToJS
            package_classes = [
                y for x in package.classes for y in script.classesObj
                if y.id == x
            ]  # TODO: i need to make package.classes [Class]!
            for clazz in package_classes:
                if sourceFilter.match(clazz.id):
                    if compiledClasses:
                        # treat compiled classes so far
                        packageUris = compileAndAdd(compiledClasses,
                                                    packageUris)
                        compiledClasses = []  # reset the collection
                    # for a source class, just include the file uri
                    clazzRelpath = clazz.id.replace(".", "/") + ".js"
                    relpath = OsPath(clazzRelpath)
                    shortUri = Uri(relpath.toUri())
                    packageUris.append(
                        "%s:%s" %
                        (clazz.library.namespace, shortUri.encodedValue()))
                else:
                    compiledClasses.append(clazz)
            else:
                # treat remaining to-be-compiled classes
                if compiledClasses:
                    packageUris = compileAndAdd(compiledClasses, packageUris)

            package.files = packageUris

            return package
        def compileAndWritePackage(package, compConf):

            def compiledFilename(compiled):
                hash_ = sha.getHash(compiled)[:12]
                fname = self._fileNameWithHash(script.baseScriptPath, hash_)
                return fname

            def compileAndAdd(compiledClasses, packageUris):
                compiled = compileClasses(compiledClasses, compOptions)
                filename = compiledFilename(compiled)
                self.writePackage(compiled, filename, script)
                filename = OsPath(os.path.basename(filename))
                shortUri = Uri(filename.toUri())
                packageUris.append("%s:%s" % ("__out__", shortUri.encodedValue()))

                return packageUris

            # ------------------------------------
            packageUris = []
            compiledClasses = []
            optimize = compConf.get("code/optimize", [])
            sourceFilter = ClassMatchList(compConf.get("code/except", []))
            compOptions  = CompileOptions(optimize=optimize)

            ##
            # This somewhat overlaps with packageUrisToJS
            package_classes = [y for x in package.classes for y in script.classesObj if y.id == x] # TODO: i need to make package.classes [Class]!
            for clazz in package_classes:
                if sourceFilter.match(clazz.id):
                    if compiledClasses:
                        # treat compiled classes so far
                        packageUris = compileAndAdd(compiledClasses, packageUris)
                        compiledClasses = []  # reset the collection
                    # for a source class, just include the file uri
                    clazzRelpath = clazz.id.replace(".", "/") + ".js"
                    relpath  = OsPath(clazzRelpath)
                    shortUri = Uri(relpath.toUri())
                    packageUris.append("%s:%s" % (clazz.library.namespace, shortUri.encodedValue()))
                else:
                    compiledClasses.append(clazz)
            else:
                # treat remaining to-be-compiled classes
                if compiledClasses:
                    packageUris = compileAndAdd(compiledClasses, packageUris)

            package.files = packageUris

            return package
Example #3
0
        def compileAndWritePackage(package, compConf, allClassVariants):

            def compiledFilename(compiled):
                hash_ = sha.getHash(compiled)[:12]
                fname = self._resolveFileName(script.baseScriptPath, script.variants, {}, "")
                fname = self._fileNameWithHash(fname, hash_)
                return fname

            def compileAndAdd(compiledClasses, packageUris, prelude='', wrap=''):
                compiled = compileClasses(compiledClasses, compOptions, log_progress)
                if wrap:
                    compiled = wrap % compiled
                if prelude:
                    compiled = prelude + compiled
                filename = compiledFilename(compiled)
                self.writePackage(compiled, filename, script)
                filename = OsPath(os.path.basename(filename))
                shortUri = Uri(filename.toUri())
                entry = "%s:%s" % ("__out__", shortUri.encodedValue())
                packageUris.append(entry)

                return packageUris

            # ------------------------------------
            packageUris = []
            optimize = compConf.get("code/optimize", [])
            format_   = compConf.get("code/format", False)
            variantSet= script.variants
            sourceFilter = ClassMatchList(compConf.get("code/except", []))
            compOptions  = CompileOptions(optimize=optimize, variants=variantSet, _format=format_)
            compOptions.allClassVariants = allClassVariants

            ##
            # This somewhat overlaps with packageUrisToJS
            compiledClasses = []
            packageData = getPackageData(package)
            packageData = ("qx.$$packageData['%s']=" % package.id) + packageData
            package_classes = [y for x in package.classes for y in script.classesObj if y.id == x] # TODO: i need to make package.classes [Class]!

            #self._console.info("Package #%s:" % package.id, feed=False)
            len_pack_classes = len(package_classes)
            # helper log function, to log progress here, but also in compileClasses()
            def log_progress(c=[0]):
                c[0]+=1
                #self._console.progress(c[0],len_pack_classes)
                self._console.dot()

            for pos,clazz in enumerate(package_classes):
                if sourceFilter.match(clazz.id):
                    package.has_source = True
                    if packageData or compiledClasses:
                        # treat compiled classes so far
                        packageUris = compileAndAdd(compiledClasses, packageUris, packageData)
                        compiledClasses = []  # reset the collection
                        packageData = ""
                    # for a source class, just include the file uri
                    clazzRelpath = clazz.id.replace(".", "/") + ".js"
                    relpath  = OsPath(clazzRelpath)
                    shortUri = Uri(relpath.toUri())
                    entry    = "%s:%s" % (clazz.library.namespace, shortUri.encodedValue())
                    packageUris.append(entry)
                    log_progress()
                else:
                    compiledClasses.append(clazz)
            else:
                # treat remaining to-be-compiled classes
                if compiledClasses:
                    closureWrap = ''
                    if isClosurePackage(package, bootPackageId(script)):
                        closureWrap = u'''qx.Part.$$notifyLoad("%s", function() {\n%%s\n});''' % package.id
                    packageUris = compileAndAdd(compiledClasses, packageUris, packageData, closureWrap)

            package.files = packageUris
            return package