summaryrefslogtreecommitdiff
path: root/webapps/qooxdoo-0.6.5-sdk/frontend/framework/tool/generator.py
diff options
context:
space:
mode:
Diffstat (limited to 'webapps/qooxdoo-0.6.5-sdk/frontend/framework/tool/generator.py')
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/framework/tool/generator.py1083
1 files changed, 0 insertions, 1083 deletions
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/tool/generator.py b/webapps/qooxdoo-0.6.5-sdk/frontend/framework/tool/generator.py
deleted file mode 100755
index 76df2d923b..0000000000
--- a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/tool/generator.py
+++ /dev/null
@@ -1,1083 +0,0 @@
-#!/usr/bin/env python
-################################################################################
-#
-# qooxdoo - the new era of web development
-#
-# http://qooxdoo.org
-#
-# Copyright:
-# 2006-2007 1&1 Internet AG, Germany, http://www.1and1.org
-#
-# License:
-# LGPL: http://www.gnu.org/licenses/lgpl.html
-# EPL: http://www.eclipse.org/org/documents/epl-v10.php
-# See the LICENSE file in the project's top-level directory for details.
-#
-# Authors:
-# * Sebastian Werner (wpbasti)
-# * Andreas Ecker (ecker)
-# * Fabian Jakobs (fjakobs)
-# * Alessandro Sala (asala)
-#
-################################################################################
-
-import sys, re, os, optparse, math
-
-# reconfigure path to import own modules from modules subfolder
-sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(sys.argv[0])), "modules"))
-
-import config, tokenizer, loader, api, tree, treegenerator, settings, resources
-import filetool, stringoptimizer, optparseext, variableoptimizer, obfuscator, compiler
-import migrator, textutil, graph
-
-
-
-
-
-
-def getparser():
- parser = optparse.OptionParser("usage: %prog [options]", option_class=optparseext.ExtendAction)
-
-
- #################################################################################
- # GENERAL
- #################################################################################
-
- # From/To File
- parser.add_option("--from-file", dest="fromFile", metavar="FILENAME", help="Read options from FILENAME.")
- parser.add_option("--export-to-file", dest="exportToFile", metavar="FILENAME", help="Store options to FILENAME.")
-
- # Directories (Lists, Match using index)
- parser.add_option("--class-path", action="extend", dest="classPath", metavar="DIRECTORY", type="string", default=[], help="Define a script input directory.")
- parser.add_option("--class-uri", action="extend", dest="classUri", metavar="PATH", type="string", default=[], help="Define a script path for the source version.")
- parser.add_option("--class-encoding", action="extend", dest="classEncoding", metavar="ENCODING", type="string", default=[], help="Define the encoding for a script input directory.")
- parser.add_option("--resource-input", action="extend", dest="resourceInput", metavar="DIRECTORY", type="string", default=[], help="Define a resource input directory.")
- parser.add_option("--resource-output", action="extend", dest="resourceOutput", metavar="DIRECTORY", type="string", default=[], help="Define a resource output directory.")
-
- # Available Actions
- parser.add_option("--generate-compiled-script", action="store_true", dest="generateCompiledScript", default=False, help="Compile source files.")
- parser.add_option("--generate-source-script", action="store_true", dest="generateSourceScript", default=False, help="Generate source version.")
- parser.add_option("--generate-api-documentation", action="store_true", dest="generateApiDocumentation", default=False, help="Generate API documentation.")
- parser.add_option("--copy-resources", action="store_true", dest="copyResources", default=False, help="Copy resource files.")
- parser.add_option("--fix-source", action="store_true", dest="fixSource", default=False, help="Fix source files")
- parser.add_option("--pretty-print", action="store_true", dest="prettyPrint", default=False, help="Pretty print source code.")
- parser.add_option("--migrate-source", action="store_true", dest="migrateSource", default=False, help="Migrate existing code to new version.")
-
- # Debug Actions
- parser.add_option("--store-tokens", action="store_true", dest="storeTokens", default=False, help="Store tokenized content of source files. (Debugging)")
- parser.add_option("--store-tree", action="store_true", dest="storeTree", default=False, help="Store tree content of source files. (Debugging)")
- parser.add_option("--print-files", action="store_true", dest="printFiles", default=False, help="Output known files. (Debugging)")
- parser.add_option("--print-modules", action="store_true", dest="printModules", default=False, help="Output known modules. (Debugging)")
- parser.add_option("--print-files-without-modules", action="store_true", dest="printFilesWithoutModules", default=False, help="Output files which have no module connection. (Debugging)")
- parser.add_option("--print-includes", action="store_true", dest="printIncludes", default=False, help="Output sorted file list. (Debugging)")
- parser.add_option("--print-dependencies", action="store_true", dest="printDeps", default=False, help="Output dependencies of files. (Debugging)")
- parser.add_option("--dependencies-graphviz-file", dest="depDotFile", metavar="FILENAME", help="Save dependencies as graphviz dot file. (Debugging)")
-
- # Output files
- parser.add_option("--source-script-file", dest="sourceScriptFile", metavar="FILENAME", help="Name of output file from source build process.")
- parser.add_option("--source-template-input-file", dest="sourceTemplateInputFile", metavar="FILENAME", help="Name of a template file to patch")
- parser.add_option("--source-template-output-file", dest="sourceTemplateOutputFile", metavar="FILENAME", help="Name of the resulting file to store the modified template to.")
- parser.add_option("--source-template-replace", dest="sourceTemplateReplace", default="<!-- qooxdoo-script-block -->", metavar="CODE", help="Content of the template which should be replaced with the script block.")
- parser.add_option("--compiled-script-file", dest="compiledScriptFile", metavar="FILENAME", help="Name of output file from compiler.")
- parser.add_option("--api-documentation-json-file", dest="apiDocumentationJsonFile", metavar="FILENAME", help="Name of JSON API file.")
- parser.add_option("--api-documentation-xml-file", dest="apiDocumentationXmlFile", metavar="FILENAME", help="Name of XML API file.")
- parser.add_option("--settings-script-file", dest="settingsScriptFile", metavar="FILENAME", help="Name of settings script file.")
-
- # Encoding
- parser.add_option("--script-output-encoding", dest="scriptOutputEncoding", default="utf-8", metavar="ENCODING", help="Defines the encoding used for script output files.")
- parser.add_option("--xml-output-encoding", dest="xmlOutputEncoding", default="utf-8", metavar="ENCODING", help="Defines the encoding used for XML output files.")
-
-
-
- #################################################################################
- # OPTIONS
- #################################################################################
-
- # General options
- parser.add_option("-q", "--quiet", action="store_false", dest="verbose", default=False, help="Quiet output mode.")
- parser.add_option("-v", "--verbose", action="store_true", dest="verbose", help="Verbose output mode.")
- parser.add_option("-d", "--debug", action="store_true", dest="enableDebug", help="Enable debug mode.")
- parser.add_option("--version", dest="version", default="0.0", metavar="VERSION", help="Version number of qooxdoo")
- parser.add_option("--package-id", dest="packageId", default="", metavar="ID", help="Defines a package ID (required for string optimization etc.)")
- parser.add_option("--disable-internal-check", action="store_true", dest="disableInternalCheck", default=False, help="Disable check of modifications to internal files.")
-
- # Options for source and compiled version
- parser.add_option("--define-runtime-setting", action="append", dest="defineRuntimeSetting", metavar="NAMESPACE.KEY:VALUE", default=[], help="Define a setting.")
- parser.add_option("--add-new-lines", action="store_true", dest="addNewLines", default=False, help="Keep newlines in compiled files.")
-
- # Options for compiled version
- parser.add_option("--add-file-ids", action="store_true", dest="addFileIds", default=False, help="Add file IDs to compiled output.")
- parser.add_option("--optimize-strings", action="store_true", dest="optimizeStrings", default=False, help="Optimize strings. Increase mshtml performance.")
- parser.add_option("--optimize-variables", action="store_true", dest="optimizeVariables", default=False, help="Optimize variables. Reducing size.")
- parser.add_option("--optimize-variables-skip-prefix", action="store", dest="optimizeVariablesSkipPrefix", metavar="PREFIX", default="", help="Skip optimization of variables beginning with PREFIX [default: optimize all variables].")
- parser.add_option("--obfuscate-identifiers", action="store_true", dest="obfuscateIdentifiers", default=False, help="Obfuscate public names like function names. (ALPHA!)")
-
- # Options for resource copying
- parser.add_option("--enable-resource-filter", action="store_true", dest="enableResourceFilter", default=False, help="Enable filtering of resource files used by classes (based on #embed).")
-
- # Options for token/tree storage
- parser.add_option("--token-output-directory", dest="tokenOutputDirectory", metavar="DIRECTORY", help="Define output directory for tokenizer result of the incoming JavaScript files. (Debugging)")
- parser.add_option("--tree-output-directory", dest="treeOutputDirectory", metavar="DIRECTORY", help="Define output directory for generated tree of the incoming JavaScript files. (Debugging)")
-
- # Cache Directory
- parser.add_option("--cache-directory", dest="cacheDirectory", metavar="DIRECTORY", help="If this is defined the loader trys to use cache to optimize the performance.")
-
- # Options for migration support
- parser.add_option("--migration-target", dest="migrationTarget", metavar="VERSION", help="Define the target for migration of source code.")
- parser.add_option("--migration-input", action="extend", dest="migrationInput", metavar="DIRECTORY", type="string", default=[], help="Define additional directories for to directories to migrate e.g. HTML files, ...")
-
-
-
-
- #################################################################################
- # INCLUDE/EXCLUDE
- #################################################################################
-
- # Include/Exclude
- parser.add_option("-i", "--include", action="extend", dest="includeWithDeps", metavar="ID", type="string", default=[], help="Include ID")
- parser.add_option("-e", "--exclude", action="extend", dest="excludeWithDeps", metavar="ID", type="string", default=[], help="Exclude ID")
- parser.add_option("--include-without-dependencies", action="extend", dest="includeWithoutDeps", metavar="ID", type="string", default=[], help="Include ID")
- parser.add_option("--exclude-without-dependencies", action="extend", dest="excludeWithoutDeps", metavar="ID", type="string", default=[], help="Exclude ID")
-
- # Include/Exclude options
- parser.add_option("--disable-auto-dependencies", action="store_false", dest="enableAutoDependencies", default=True, help="Disable detection of dependencies.")
-
- return parser
-
-
-
-
-
-
-def argparser(cmdlineargs):
-
- # Parse arguments
- (options, args) = getparser().parse_args(cmdlineargs)
-
- # Export to file
- if options.exportToFile != None:
- print
- print " EXPORTING:"
- print "----------------------------------------------------------------------------"
-
- print " * Translating options..."
-
- optionString = "# Exported configuration from build.py\n\n"
- ignoreValue = True
- lastWasKey = False
-
- for arg in cmdlineargs:
- if arg == "--export-to-file":
- ignoreValue = True
-
- elif arg.startswith("--"):
- if lastWasKey:
- optionString += "\n"
-
- optionString += arg[2:]
- ignoreValue = False
- lastWasKey = True
-
- elif arg.startswith("-"):
- print " - Could not export short argument: %s" % arg
- optionString += "\n# Ignored short argument %s\n" % arg
- ignoreValue = True
-
- elif not ignoreValue:
- optionString += " = %s\n" % arg
- ignoreValue = True
- lastWasKey = False
-
-
-
- print " * Export to file: %s" % options.exportToFile
- filetool.save(options.exportToFile, optionString)
-
- sys.exit(0)
-
- # Read from file
- elif options.fromFile != None:
-
- print
- print " INITIALIZATION:"
- print "----------------------------------------------------------------------------"
-
- print " * Reading configuration..."
-
- # Convert file content into arguments
- fileargs = {}
- fileargpos = 0
- fileargid = "default"
- currentfileargs = []
- fileargs[fileargid] = currentfileargs
-
- alternativeFormatBegin = re.compile("\s*\[\s*")
- alternativeFormatEnd = re.compile("\s*\]\s*=\s*")
- emptyLine = re.compile("^\s*$")
-
- for line in file(options.fromFile).read().split("\n"):
- line = line.strip()
-
- if emptyLine.match(line) or line.startswith("#") or line.startswith("//"):
- continue
-
- # Translating...
- line = alternativeFormatBegin.sub(" = ", line)
- line = alternativeFormatEnd.sub(":", line)
-
- # Splitting line
- line = line.split("=")
-
- # Extract key element
- key = line.pop(0).strip()
-
- # Separate packages
- if key == "package":
- fileargpos += 1
- fileargid = line[0].strip()
-
- print " - Found package: %s" % fileargid
-
- currentfileargs = []
- fileargs[fileargid] = currentfileargs
- continue
-
- currentfileargs.append("--%s" % key)
-
- if len(line) > 0:
- value = line[0].strip()
- currentfileargs.append(value)
-
- # Parse
- defaultargs = fileargs["default"]
-
- if len(fileargs) > 1:
- (fileDb, moduleDb) = load(getparser().parse_args(defaultargs)[0])
-
- if options.obfuscateIdentifiers:
- sharednames = {}
-
- for filearg in fileargs:
- if filearg == "default":
- continue
-
- combinedargs = []
- combinedargs.extend(defaultargs)
- combinedargs.extend(fileargs[filearg])
-
- options = getparser().parse_args(defaultargs)[0]
- findnames(fileDb, moduleDb, options, sharednames)
-
- names = obfuscator.sort(sharednames)
-
- for filearg in fileargs:
- if filearg == "default":
- continue
-
- print
- print
- print
- print
- print " PACKAGE: %s" % filearg
- print "----------------------------------------------------------------------------"
-
- combinedargs = []
- combinedargs.extend(defaultargs)
- combinedargs.extend(fileargs[filearg])
-
- options = getparser().parse_args(combinedargs)[0]
-
- if options.obfuscateIdentifiers:
- execute(fileDb, moduleDb, options, filearg, names)
- else:
- execute(fileDb, moduleDb, options, filearg)
-
- else:
- options = getparser().parse_args(defaultargs)[0]
- (fileDb, moduleDb) = load(options)
-
- if options.obfuscateIdentifiers:
- execute(fileDb, moduleDb, options, "", obfuscator.sort(findnames(fileDb, moduleDb, options)))
- else:
- execute(fileDb, moduleDb, options, "")
-
- else:
- print
- print " INITIALIZATION:"
- print "----------------------------------------------------------------------------"
-
- print " * Processing arguments..."
-
- (fileDb, moduleDb) = load(options)
-
- if options.obfuscateIdentifiers:
- execute(fileDb, moduleDb, options, options.packageId, obfuscator.sort(findnames(fileDb, moduleDb, options)))
- else:
- execute(fileDb, moduleDb, options, options.packageId)
-
-
-
-
-
-
-
-def main():
- if len(sys.argv[1:]) == 0:
- basename = os.path.basename(sys.argv[0])
- print "usage: %s [options]" % basename
- print "Try '%s -h' or '%s --help' to show the help message." % (basename, basename)
- sys.exit(1)
-
- argparser(sys.argv[1:])
-
-
-
-
-
-
-def load(options):
-
- ######################################################################
- # SOURCE LOADER
- ######################################################################
-
- print
- print " SOURCE LOADER:"
- print "----------------------------------------------------------------------------"
-
- if options.classPath == None or len(options.classPath) == 0:
- if len(options.migrationInput) == 0:
- basename = os.path.basename(sys.argv[0])
- print "You must define at least one script input directory!"
- print "usage: %s [options]" % basename
- print "Try '%s -h' or '%s --help' to show the help message." % (basename, basename)
- sys.exit(1)
-
- (fileDb, moduleDb) = loader.indexScriptInput(options)
-
-
-
-
-
- ######################################################################
- # DEBUG OUTPUT JOBS
- ######################################################################
-
- if options.printFiles:
- print
- print " OUTPUT OF KNOWN FILES:"
- print "----------------------------------------------------------------------------"
- print " * These are all known files:"
- for fileEntry in fileDb:
- print " - %s (%s)" % (fileEntry, fileDb[fileEntry]["path"])
-
- if options.printModules:
- print
- print " OUTPUT OF KNOWN MODULES:"
- print "----------------------------------------------------------------------------"
- print " * These are all known modules:"
- for moduleEntry in moduleDb:
- print " * %s" % moduleEntry
- for fileEntry in moduleDb[moduleEntry]:
- print " - %s" % fileEntry
-
- if options.printFilesWithoutModules:
- print
- print " OUTPUT OF FILES WHICH HAVE NO MODULE CONNECTION:"
- print "----------------------------------------------------------------------------"
- print " * These are all files without a module connection:"
- for fileEntry in fileDb:
- fileFound = False
-
- for moduleEntry in moduleDb:
- for moduleFile in moduleDb[moduleEntry]:
- if moduleFile == fileEntry:
- fileFound = True
- break
-
- if not fileFound:
- print " - %s" % fileEntry
-
-
-
- return fileDb, moduleDb
-
-
-
-
-
-def findnames(fileDb, moduleDb, options, names={}):
-
- print
- print " SEARCHING FOR IDENTIFIERS:"
- print "----------------------------------------------------------------------------"
-
- if options.verbose:
- print " * Searching..."
- else:
- print " * Searching: ",
-
-
- sortedIncludeList = loader.getSortedList(options, fileDb, moduleDb)
-
- for fileId in sortedIncludeList:
- if options.verbose:
- print " - %s" % fileId
-
- else:
- sys.stdout.write(".")
- sys.stdout.flush()
-
- obfuscator.search(loader.getTree(fileDb, fileId, options), names)
-
- if not options.verbose:
- print
-
- return names
-
-
-
-
-
-
-
-
-def execute(fileDb, moduleDb, options, pkgid="", names=[]):
-
- additionalOutput = []
-
-
- ######################################################################
- # SORT OF INCLUDE LIST
- ######################################################################
-
- print
- print " SORT OF INCLUDE LIST:"
- print "----------------------------------------------------------------------------"
-
- if options.verbose:
- print " * Include (with dependencies): %s" % options.includeWithDeps
- print " * Include (without dependencies): %s" % options.includeWithoutDeps
- print " * Exclude (with dependencies): %s" % options.excludeWithDeps
- print " * Exclude (without dependencies): %s" % options.excludeWithoutDeps
-
- print " * Sorting %s classes..." % len(fileDb)
-
- sortedIncludeList = loader.getSortedList(options, fileDb, moduleDb)
-
- if len(sortedIncludeList) == 0:
- print " - No class files to include. Exciting!"
- sys.exit(1)
- else:
- print " - Including %s classes" % len(sortedIncludeList)
-
- if options.printIncludes:
- print
- print " PRINT OF INCLUDE ORDER:"
- print "----------------------------------------------------------------------------"
- print " * The files will be included in this order:"
- for fileId in sortedIncludeList:
- print " - %s" % fileId
-
- if options.printDeps:
- print
- print " OUTPUT OF DEPENDENCIES:"
- print "----------------------------------------------------------------------------"
- print " * These are all included files with their dependencies:"
- for fileId in sortedIncludeList:
- print " - %s" % fileId
- if len(fileDb[fileId]["loadtimeDeps"]) > 0:
- print " - Loadtime: "
- for depEntry in fileDb[fileId]["loadtimeDeps"]:
- print " - %s" % depEntry
-
- if len(fileDb[fileId]["afterDeps"]) > 0:
- print " - After: "
- for depEntry in fileDb[fileId]["afterDeps"]:
- print " - %s" % depEntry
-
- if len(fileDb[fileId]["runtimeDeps"]) > 0:
- print " - Runtime: "
- for depEntry in fileDb[fileId]["runtimeDeps"]:
- print " - %s" % depEntry
-
- if len(fileDb[fileId]["loadDeps"]) > 0:
- print " - Load: "
- for depEntry in fileDb[fileId]["loadDeps"]:
- print " - %s" % depEntry
-
- if len(fileDb[fileId]["optionalDeps"]) > 0:
- print " - Optional: "
- for depEntry in fileDb[fileId]["optionalDeps"]:
- print " - %s" % depEntry
-
-
-
-
-
- ######################################################################
- # GRAPHVIZ OUTPUT
- ######################################################################
-
- if options.depDotFile:
- graph.store(fileDb, sortedIncludeList, options)
-
-
-
-
-
-
- ######################################################################
- # SOURCE MIGRATION
- ######################################################################
-
- if options.migrateSource:
- print
- print " SOURCE MIGRATION:"
- print "----------------------------------------------------------------------------"
-
- print " * Migrate Source Code..."
-
- migrator.handle(sortedIncludeList, fileDb, options)
-
- # Return after migration: Ignore other jobs
- return
-
-
-
-
-
- ######################################################################
- # GENERATION OF PRETTY PRINTED CODE
- ######################################################################
-
- if options.fixSource:
- print
- print " FIX SOURCE CODE:"
- print "----------------------------------------------------------------------------"
-
- if options.verbose:
- print " * Fixing code..."
- else:
- print " * Fixing code: ",
-
- for fileId in sortedIncludeList:
- if options.verbose:
- print " - Reading %s" % fileId
-
- fileEntry = fileDb[fileId]
-
- filePath = fileEntry["path"]
- fileEncoding = fileEntry["encoding"]
-
- fileContent = filetool.read(filePath, fileEncoding)
- fixedContent = textutil.removeTrailingSpaces(textutil.tab2Space(textutil.any2Unix(fileContent), 2))
-
- if fixedContent != fileContent:
- if options.verbose:
- print " - Storing modifications..."
- else:
- sys.stdout.write("!")
- sys.stdout.flush()
-
- filetool.save(filePath, fixedContent, fileEncoding)
-
- elif not options.verbose:
- sys.stdout.write(".")
- sys.stdout.flush()
-
- if not options.verbose:
- print
-
- # Return after fixing: Ignore other jobs
- return
-
-
-
-
-
-
- ######################################################################
- # GENERATION OF PRETTY PRINTED CODE
- ######################################################################
-
- if options.prettyPrint:
- print
- print " GENERATION OF PRETTY PRINTED CODE:"
- print "----------------------------------------------------------------------------"
-
- if options.verbose:
- print " * Pretty printing..."
- else:
- print " * Pretty printing: ",
-
- for fileId in sortedIncludeList:
- if options.verbose:
- print " - Compiling %s" % fileId
- else:
- sys.stdout.write(".")
- sys.stdout.flush()
-
- prettyFileContent = compiler.compile(loader.getTree(fileDb, fileId, options), True)
-
- if not prettyFileContent.endswith("\n"):
- prettyFileContent += "\n"
-
- filetool.save(fileDb[fileId]["path"], prettyFileContent)
-
- if not options.verbose:
- print
-
- # Return after pretty print: Ignore other jobs
- return
-
-
-
- ######################################################################
- # STRING OPTIMIZATION
- ######################################################################
-
- if options.optimizeStrings:
- print
- print " STRING OPTIMIZATION:"
- print "----------------------------------------------------------------------------"
-
- if options.verbose:
- print " * Searching strings..."
- else:
- print " * Searching strings: ",
-
- stringMap = {}
-
- for fileId in sortedIncludeList:
- if options.verbose:
- print " - %s" % fileId
- else:
- sys.stdout.write(".")
- sys.stdout.flush()
-
- localMap = loader.getStrings(fileDb, fileId, options)
-
- for value in localMap:
- if value in stringMap:
- stringMap[value] += localMap[value]
- else:
- stringMap[value] = localMap[value]
-
- if not options.verbose:
- print
-
- counter = 0
- for value in stringMap:
- counter += stringMap[value]
-
- stringList = stringoptimizer.sort(stringMap)
-
- print " * Found %s strings (used %s times)" % (len(stringMap), counter)
-
- if options.verbose:
- print " * Replacing strings..."
- else:
- print " * Replacing strings: ",
-
- for fileId in sortedIncludeList:
- if options.verbose:
- print " - %s" % fileId
- else:
- sys.stdout.write(".")
- sys.stdout.flush()
-
- stringoptimizer.replace(loader.getTree(fileDb, fileId, options), stringList, "$" + pkgid, options.verbose)
-
- if not options.verbose:
- print
-
- print " * Generating replacement..."
- additionalOutput.append(stringoptimizer.replacement(stringList, "$" + pkgid))
-
-
-
-
-
-
- ######################################################################
- # LOCAL VARIABLE OPTIMIZATION
- ######################################################################
-
- if options.optimizeVariables:
- print
- print " LOCAL VARIABLE OPTIMIZATION:"
- print "----------------------------------------------------------------------------"
-
- if options.verbose:
- print " * Optimizing variables..."
- else:
- print " * Optimizing variables: ",
-
- for fileId in sortedIncludeList:
- if options.verbose:
- print " - %s" % fileId
- else:
- sys.stdout.write(".")
- sys.stdout.flush()
-
- variableoptimizer.search(loader.getTree(fileDb, fileId, options), [], 0, "$", skipPrefix = options.optimizeVariablesSkipPrefix, debug = options.enableDebug)
-
- if not options.verbose:
- print
-
-
-
-
-
-
- ######################################################################
- # NAME OBFUSCATION
- ######################################################################
-
- if options.obfuscateIdentifiers:
- print
- print " OBFUSCATE IDENTIFIERS:"
- print "----------------------------------------------------------------------------"
-
- if options.verbose:
- print " * Obfuscating identifiers..."
- else:
- print " * Obfuscating identifiers: ",
-
- counter = 0
-
- for fileId in sortedIncludeList:
- if options.verbose:
- print " - %s" % fileId
- else:
- sys.stdout.write(".")
- sys.stdout.flush()
-
- counter += obfuscator.update(loader.getTree(fileDb, fileId, options), names, "$$")
-
- if not options.verbose:
- print
-
- print " * Updated %s names" % counter
-
-
-
-
-
-
- ######################################################################
- # TOKEN STORAGE
- ######################################################################
-
- if options.storeTokens:
- print
- print " TOKEN STORAGE:"
- print "----------------------------------------------------------------------------"
-
- if options.tokenOutputDirectory == None:
- print " * You must define the token output directory!"
- sys.exit(1)
-
- if options.verbose:
- print " * Storing tokens..."
- else:
- print " * Storing tokens: ",
-
- for fileId in sortedIncludeList:
- tokenString = tokenizer.convertTokensToString(loader.getTokens(fileDb, fileId, options))
-
- if options.verbose:
- print " * writing tokens for %s (%s KB)..." % (fileIdm, len(tokenString) / 1000.0)
- else:
- sys.stdout.write(".")
- sys.stdout.flush()
-
- filetool.save(os.path.join(filetool.normalize(options.tokenOutputDirectory), fileId + config.TOKENEXT), tokenString)
-
- if not options.verbose:
- print
-
-
-
-
- ######################################################################
- # TREE STORAGE
- ######################################################################
-
- if options.storeTree:
- print
- print " TREE STORAGE:"
- print "----------------------------------------------------------------------------"
-
- if options.treeOutputDirectory == None:
- print " * You must define the tree output directory!"
- sys.exit(1)
-
- if options.verbose:
- print " * Storing tree..."
- else:
- print " * Storing tree: ",
-
- for fileId in sortedIncludeList:
- treeString = "<?xml version=\"1.0\" encoding=\"" + options.xmlOutputEncoding + "\"?>\n" + tree.nodeToXmlString(loader.getTree(fileDb, fileId, options))
-
- if options.verbose:
- print " * writing tree for %s (%s KB)..." % (fileId, len(treeString) / 1000.0)
- else:
- sys.stdout.write(".")
- sys.stdout.flush()
-
- filetool.save(os.path.join(filetool.normalize(options.treeOutputDirectory), fileId + config.XMLEXT), treeString)
-
- if not options.verbose:
- print
-
-
-
-
-
- ######################################################################
- # GENERATION OF API
- ######################################################################
-
- if options.generateApiDocumentation:
- print
- print " GENERATION OF API:"
- print "----------------------------------------------------------------------------"
-
- if options.apiDocumentationJsonFile == None and options.apiDocumentationXmlFile == None:
- print " * You must define one of JSON or XML API documentation file!"
-
- docTree = None
-
- if options.verbose:
- print " * Generating API tree..."
- else:
- print " * Generating API tree: ",
-
- for fileId in sortedIncludeList:
- if options.verbose:
- print " - %s" % fileId
- else:
- sys.stdout.write(".")
- sys.stdout.flush()
-
- docTree = api.createDoc(loader.getTree(fileDb, fileId, options), docTree)
-
- if not options.verbose:
- print
-
- if docTree:
- print " * Finalizing tree..."
- api.postWorkPackage(docTree, docTree)
-
- if options.apiDocumentationXmlFile != None:
- print " * Writing XML API file to %s" % options.apiDocumentationXmlFile
-
- xmlContent = "<?xml version=\"1.0\" encoding=\"" + options.xmlOutputEncoding + "\"?>\n"
-
- if options.addNewLines:
- xmlContent += "\n" + tree.nodeToXmlString(docTree)
- else:
- xmlContent += tree.nodeToXmlString(docTree, "", "", "")
-
- filetool.save(options.apiDocumentationXmlFile, xmlContent, options.xmlOutputEncoding)
-
- if options.apiDocumentationJsonFile != None:
- print " * Writing JSON API file to %s" % options.apiDocumentationJsonFile
-
- if options.addNewLines:
- jsonContent = tree.nodeToJsonString(docTree)
- else:
- jsonContent = tree.nodeToJsonString(docTree, "", "", "")
-
- filetool.save(options.apiDocumentationJsonFile, jsonContent, options.scriptOutputEncoding)
-
-
-
-
-
- ######################################################################
- # CREATE COPY OF RESOURCES
- ######################################################################
-
- if options.copyResources:
-
- print
- print " CREATE COPY OF RESOURCES:"
- print "----------------------------------------------------------------------------"
-
- resources.copy(options, sortedIncludeList, fileDb)
-
-
-
-
-
-
- ######################################################################
- # GENERATION OF SETTINGS
- ######################################################################
-
- if options.generateSourceScript or options.generateCompiledScript:
- settingsStr = ""
-
- if len(options.defineRuntimeSetting) != 0:
- print
- print " GENERATION OF SETTINGS:"
- print "----------------------------------------------------------------------------"
-
- print " * Processing input data..."
- settingsStr = settings.generate(options)
-
- if options.settingsScriptFile:
- print " * Storing result to %s" % options.settingsScriptFile
- filetool.save(options.settingsScriptFile, settingsStr)
-
- # clear settings for build and source
- settingsStr = ""
-
-
-
-
-
- ######################################################################
- # GENERATION OF SOURCE VERSION
- ######################################################################
-
- if options.generateSourceScript:
- print
- print " GENERATION OF SOURCE SCRIPT:"
- print "----------------------------------------------------------------------------"
-
- if options.sourceScriptFile == None and (options.sourceTemplateInputFile == None or options.sourceTemplateOutputFile == None):
- print " * You must define at least one source script file or template input/output."
- sys.exit(1)
-
- if options.sourceScriptFile:
- options.sourceScriptFile = os.path.normpath(options.sourceScriptFile)
-
- if options.sourceTemplateInputFile:
- options.sourceTemplateInputFile = os.path.normpath(options.sourceTemplateInputFile)
-
- if options.sourceTemplateOutputFile:
- options.sourceTemplateOutputFile = os.path.normpath(options.sourceTemplateOutputFile)
-
-
- print " * Generating script block..."
-
- # Handling line feed setting
- sourceLineFeed = "";
- if options.addNewLines:
- sourceLineFeed = "\n";
-
-
- # Generating inline code...
- inlineCode = ""
- inlineCode += settingsStr + sourceLineFeed
- inlineCode += "qx.IS_SOURCE=true;%s" % sourceLineFeed
- inlineCode += "qx.VERSION=\"%s\";%s" % (options.version, sourceLineFeed)
- inlineCode += "".join(additionalOutput)
-
-
- # Generating script block
- scriptBlocks = ""
- scriptBlocks += '<script type="text/javascript">%s</script>' % inlineCode
- for fileId in sortedIncludeList:
- if fileDb[fileId]["classUri"] == None:
- print " * Missing class URI definition for class path %s." % fileDb[fileId]["classPath"]
- sys.exit(1)
-
- scriptBlocks += '<script type="text/javascript" src="%s%s"></script>' % (os.path.join(fileDb[fileId]["classUri"], fileDb[fileId]["pathId"].replace(".", os.sep)), config.JSEXT)
- scriptBlocks += sourceLineFeed
-
-
-
- if options.sourceScriptFile != None:
- print " * Storing includer as %s..." % options.sourceScriptFile
- sourceScript = "document.write('%s');" % scriptBlocks.replace("'", "\\'")
- if options.addNewLines:
- sourceScript = sourceScript.replace("\n", "\\\n")
- filetool.save(options.sourceScriptFile, sourceScript, options.scriptOutputEncoding)
-
- if options.sourceTemplateInputFile != None and options.sourceTemplateOutputFile != None:
- print " * Patching template: %s => %s" % (options.sourceTemplateInputFile, options.sourceTemplateOutputFile)
- tmpl = filetool.read(options.sourceTemplateInputFile)
- res = tmpl.replace(options.sourceTemplateReplace, scriptBlocks)
- filetool.save(options.sourceTemplateOutputFile, res, options.scriptOutputEncoding)
-
-
-
-
-
- ######################################################################
- # GENERATION OF COMPILED VERSION
- ######################################################################
-
- if options.generateCompiledScript:
- print
- print " GENERATION OF COMPILED SCRIPT:"
- print "----------------------------------------------------------------------------"
-
- buildLineFeed = "";
- if options.addNewLines:
- buildLineFeed = "\n";
-
- inlineCode = ""
- inlineCode += settingsStr + buildLineFeed
- inlineCode += "qx.IS_SOURCE=false;%s" % buildLineFeed
- inlineCode += "qx.VERSION=\"%s\";%s" % (options.version, buildLineFeed)
- inlineCode += "".join(additionalOutput)
-
- compiledOutput = inlineCode
-
- if options.compiledScriptFile == None:
- print " * You must define the compiled script file!"
- sys.exit(1)
-
- if options.verbose:
- print " * Compiling..."
- else:
- print " * Compiling: ",
-
- for fileId in sortedIncludeList:
- if options.verbose:
- print " - Compiling %s" % fileId
- else:
- sys.stdout.write(".")
- sys.stdout.flush()
-
- compiledFileContent = compiler.compile(loader.getTree(fileDb, fileId, options), False, options.addNewLines, options.enableDebug)
-
- if options.addFileIds:
- compiledOutput += "\n\n\n/* ID: " + fileId + " */\n" + compiledFileContent + "\n"
- else:
- compiledOutput += compiledFileContent
-
- if not compiledOutput.endswith(";") and not compiledOutput.endswith("\n"):
- compiledOutput += ";"
-
- if not options.verbose:
- print
-
- print " * Storing output as %s..." % options.compiledScriptFile
- filetool.save(options.compiledScriptFile, compiledOutput, options.scriptOutputEncoding)
-
-
-
-
-
-
-
-######################################################################
-# MAIN LOOP
-######################################################################
-
-if __name__ == '__main__':
- try:
- main()
-
- except KeyboardInterrupt:
- print
- print " * Keyboard Interrupt"
- sys.exit(1)