def main(argv=None): options = {} objects = None optionsUsage = { "a": ("generate all database information (-p -s -x)", False), "b:": ("base directory", False, "dir"), "d:": ("versions directory", False, "dir"), "p": ("generate python domain classes", False), "s": ("generate sql schema and persistence classes", False), "x": ("generate xml schema and persistence classes", False), "v:": ("vistrail version tag", True, "version"), "m": ("make all directories", False), "n": ("do not change current version", False), } optStr = "".join(optionsUsage.keys()) optKeys = optStr.replace(":", "") for idx in xrange(len(optKeys)): options[optKeys[idx]] = False try: (optlist, args) = getopt.getopt(sys.argv[1:], optStr) for opt in optlist: if opt[1] is not None and opt[1] != "": options[opt[0][1:]] = opt[1] else: options[opt[0][1:]] = True except getopt.GetoptError: usage(optionsUsage) return if options["b"]: baseDir = options["b"] else: baseDir = BASE_DIR baseDirs = dirStructure(baseDir) if not options["v"]: usage(optionsUsage) return version = options["v"] # make sure version use dot-style assert len(version.split(".")) == 3 versionName = "v" + version.replace(".", "_") if options["d"]: versionsDir = options["d"] else: versionsDir = os.path.join(baseDir, "versions") versionDir = os.path.join(versionsDir, versionName) versionDirs = dirStructure(versionDir) print baseDirs print versionDirs if options["m"]: makeAllDirs(baseDirs) makeAllDirs(versionDirs) # check whether we should use existing specs for version use_base_specs = True if options["n"] and os.path.exists(versionDirs["specs"]): for file in os.listdir(versionDirs["specs"]): if file.endswith(".xml"): # assume we've already copied the specs use_base_specs = False if use_base_specs: # copy specs to version print "copying base specs to version directory..." for file in os.listdir(baseDirs["specs"]): if file.endswith(".xml"): print "copying %s" % file filename = os.path.join(baseDirs["specs"], file) toFile = os.path.join(versionDirs["specs"], file) shutil.copyfile(filename, toFile) else: print "using existing specs from version directory..." if options["p"] or options["a"]: # generate python domain objects print "generating python domain objects..." if objects is None: parser = AutoGenParser() objects = parser.parse(versionDirs["specs"]) run_template( "templates/domain.py.mako", objects, version, versionName, os.path.join(versionDirs["domain"], "auto_gen.py"), True, ) if not options["n"]: domainFile = os.path.join(baseDirs["domain"], "__init__.py") f = open(domainFile, "w") f.write(COPYRIGHT_NOTICE) f.write("from vistrails.db.versions.%s.domain import *\n" % versionName) f.close() if options["x"] or options["a"]: # generate xml schema and dao objects print "generating xml schema and dao objects..." if objects is None: parser = AutoGenParser() objects = parser.parse(versionDirs["specs"]) xml_objects = xml_gen_objects.convert(objects) run_template( "templates/xml_schema.xsd.mako", xml_gen_objects.convert_schema_order(xml_objects, "vistrail"), version, versionName, os.path.join(versionDirs["xmlSchema"], "vistrail.xsd"), False, ) run_template( "templates/xml_schema.xsd.mako", xml_gen_objects.convert_schema_order(xml_objects, "workflow"), version, versionName, os.path.join(versionDirs["xmlSchema"], "workflow.xsd"), False, ) run_template( "templates/xml_schema.xsd.mako", xml_gen_objects.convert_schema_order(xml_objects, "log"), version, versionName, os.path.join(versionDirs["xmlSchema"], "log.xsd"), False, ) run_template( "templates/xml.py.mako", xml_objects, version, versionName, os.path.join(versionDirs["xmlPersistence"], "auto_gen.py"), True, ) if options["s"] or options["a"]: # generate sql schema and dao objects print "generating sql schema and dao objects..." if objects is None: parser = AutoGenParser() objects = parser.parse(versionDirs["specs"]) sql_objects = sql_gen_objects.convert(objects) run_template( "templates/sql_schema.sql.mako", sql_objects, version, versionName, os.path.join(versionDirs["sqlSchema"], "vistrails.sql"), False, ) run_template( "templates/sql_delete.sql.mako", sql_objects, version, versionName, os.path.join(versionDirs["sqlSchema"], "vistrails_drop.sql"), False, ) run_template( "templates/sql.py.mako", sql_objects, version, versionName, os.path.join(versionDirs["sqlPersistence"], "auto_gen.py"), True, ) if not options["n"]: domainFile = os.path.join(baseDirs["persistence"], "__init__.py") f = open(domainFile, "w") f.write(COPYRIGHT_NOTICE) f.write("from vistrails.db.versions.%s.persistence import *\n" % versionName) f.close()
def main(argv=None): options = {} objects = None optionsUsage = {'a': ('generate all database information (-p -s -x)', False), 'b:': ('base directory', False, 'dir'), 'd:': ('versions directory', False, 'dir'), 'p': ('generate python domain classes', False), 's': ('generate sql schema and persistence classes', False), 'x': ('generate xml schema and persistence classes', False), 'v:': ('vistrail version tag', True, 'version'), 'm': ('make all directories', False), 'n': ('do not change current version', False)} optStr = ''.join(optionsUsage.keys()) optKeys = optStr.replace(':','') for idx in xrange(len(optKeys)): options[optKeys[idx]] = False try: (optlist, args) = getopt.getopt(sys.argv[1:], optStr) for opt in optlist: if opt[1] is not None and opt[1] != '': options[opt[0][1:]] = opt[1] else: options[opt[0][1:]] = True except getopt.GetoptError: usage(optionsUsage) return if options['b']: baseDir = options['b'] else: baseDir = BASE_DIR baseDirs = dirStructure(baseDir) if not options['v']: usage(optionsUsage) return version = options['v'] # make sure version use dot-style assert(len(version.split('.'))==3) versionName = 'v' + version.replace('.', '_') if options['d']: versionsDir = options['d'] else: versionsDir = os.path.join(baseDir, 'versions') versionDir = os.path.join(versionsDir, versionName) versionDirs = dirStructure(versionDir) print baseDirs print versionDirs if options['m']: makeAllDirs(baseDirs) makeAllDirs(versionDirs) # check whether we should use existing specs for version use_base_specs = True if options['n'] and os.path.exists(versionDirs['specs']): for file in os.listdir(versionDirs['specs']): if file.endswith('.xml'): # assume we've already copied the specs use_base_specs = False if use_base_specs: # copy specs to version print "copying base specs to version directory..." for file in os.listdir(baseDirs['specs']): if file.endswith('.xml'): print 'copying %s' % file filename = os.path.join(baseDirs['specs'], file) toFile = os.path.join(versionDirs['specs'], file) shutil.copyfile(filename, toFile) else: print "using existing specs from version directory..." if options['p'] or options['a']: # generate python domain objects print "generating python domain objects..." if objects is None: parser = AutoGenParser() objects = parser.parse(versionDirs['specs']) run_template('templates/domain.py.mako', objects, version, versionName, os.path.join(versionDirs['domain'], 'auto_gen.py'), True) if not options['n']: domainFile = os.path.join(baseDirs['domain'], '__init__.py') f = open(domainFile, 'w') f.write(COPYRIGHT_NOTICE) f.write('from vistrails.db.versions.%s.domain import *\n' % \ versionName) f.close() if options['x'] or options['a']: # generate xml schema and dao objects print "generating xml schema and dao objects..." if objects is None: parser = AutoGenParser() objects = parser.parse(versionDirs['specs']) xml_objects = xml_gen_objects.convert(objects) run_template('templates/xml_schema.xsd.mako', xml_gen_objects.convert_schema_order(xml_objects, 'vistrail'), version, versionName, os.path.join(versionDirs['xmlSchema'], 'vistrail.xsd'), False) run_template('templates/xml_schema.xsd.mako', xml_gen_objects.convert_schema_order(xml_objects, 'workflow'), version, versionName, os.path.join(versionDirs['xmlSchema'], 'workflow.xsd'), False) run_template('templates/xml_schema.xsd.mako', xml_gen_objects.convert_schema_order(xml_objects, 'log'), version, versionName, os.path.join(versionDirs['xmlSchema'], 'log.xsd'), False) run_template('templates/xml.py.mako', xml_objects, version, versionName, os.path.join(versionDirs['xmlPersistence'], 'auto_gen.py'), True) if options['s'] or options['a']: # generate sql schema and dao objects print "generating sql schema and dao objects..." if objects is None: parser = AutoGenParser() objects = parser.parse(versionDirs['specs']) sql_objects = sql_gen_objects.convert(objects) run_template('templates/sql_schema.sql.mako', sql_objects, version, versionName, os.path.join(versionDirs['sqlSchema'], 'vistrails.sql'), False) run_template('templates/sql_delete.sql.mako', sql_objects, version, versionName, os.path.join(versionDirs['sqlSchema'], 'vistrails_drop.sql'), False) run_template('templates/sql.py.mako', sql_objects, version, versionName, os.path.join(versionDirs['sqlPersistence'], 'auto_gen.py'), True) if not options['n']: domainFile = os.path.join(baseDirs['persistence'], '__init__.py') f = open(domainFile, 'w') f.write(COPYRIGHT_NOTICE) f.write('from vistrails.db.versions.%s.persistence import *\n' % \ versionName) f.close()
def main(argv=None): options = {} objects = None optionsUsage = { 'a': ('generate all database information (-p -s -x)', False), 'b:': ('base directory', False, 'dir'), 'd:': ('versions directory', False, 'dir'), 'p': ('generate python domain classes', False), 's': ('generate sql schema and persistence classes', False), 'x': ('generate xml schema and persistence classes', False), 'v:': ('vistrail version tag', True, 'version'), 'm': ('make all directories', False), 'n': ('do not change current version', False) } optStr = ''.join(optionsUsage.keys()) optKeys = optStr.replace(':', '') for idx in xrange(len(optKeys)): options[optKeys[idx]] = False try: (optlist, args) = getopt.getopt(sys.argv[1:], optStr) for opt in optlist: if opt[1] is not None and opt[1] != '': options[opt[0][1:]] = opt[1] else: options[opt[0][1:]] = True except getopt.GetoptError: usage(optionsUsage) return if options['b']: baseDir = options['b'] else: baseDir = BASE_DIR baseDirs = dirStructure(baseDir) if not options['v']: usage(optionsUsage) return version = options['v'] versionName = 'v' + version.replace('.', '_') if options['d']: versionsDir = options['d'] else: versionsDir = os.path.join(baseDir, 'versions') versionDir = os.path.join(versionsDir, versionName) versionDirs = dirStructure(versionDir) print baseDirs print versionDirs if options['m']: makeAllDirs(baseDirs) makeAllDirs(versionDirs) # check whether we should use existing specs for version use_base_specs = True if options['n'] and os.path.exists(versionDirs['specs']): for file in os.listdir(versionDirs['specs']): if file.endswith('.xml'): # assume we've already copied the specs use_base_specs = False if use_base_specs: # copy specs to version print "copying base specs to version directory..." for file in os.listdir(baseDirs['specs']): if file.endswith('.xml'): print 'copying %s' % file filename = os.path.join(baseDirs['specs'], file) toFile = os.path.join(versionDirs['specs'], file) shutil.copyfile(filename, toFile) else: print "using existing specs from version directory..." if options['p'] or options['a']: # generate python domain objects print "generating python domain objects..." if objects is None: parser = AutoGenParser() objects = parser.parse(versionDirs['specs']) run_template('templates/domain.py.mako', objects, version, versionName, os.path.join(versionDirs['domain'], 'auto_gen.py'), True) if not options['n']: domainFile = os.path.join(baseDirs['domain'], '__init__.py') f = open(domainFile, 'w') f.write(COPYRIGHT_NOTICE) f.write('from db.versions.%s.domain import *\n' % \ versionName) f.close() if options['x'] or options['a']: # generate xml schema and dao objects print "generating xml schema and dao objects..." if objects is None: parser = AutoGenParser() objects = parser.parse(versionDirs['specs']) xml_objects = xml_gen_objects.convert(objects) run_template( 'templates/xml_schema.xsd.mako', xml_gen_objects.convert_schema_order(xml_objects, 'vistrail'), version, versionName, os.path.join(versionDirs['xmlSchema'], 'vistrail.xsd'), False) run_template( 'templates/xml_schema.xsd.mako', xml_gen_objects.convert_schema_order(xml_objects, 'workflow'), version, versionName, os.path.join(versionDirs['xmlSchema'], 'workflow.xsd'), False) run_template('templates/xml_schema.xsd.mako', xml_gen_objects.convert_schema_order(xml_objects, 'log'), version, versionName, os.path.join(versionDirs['xmlSchema'], 'log.xsd'), False) run_template( 'templates/xml.py.mako', xml_objects, version, versionName, os.path.join(versionDirs['xmlPersistence'], 'auto_gen.py'), True) if options['s'] or options['a']: # generate sql schema and dao objects print "generating sql schema and dao objects..." if objects is None: parser = AutoGenParser() objects = parser.parse(versionDirs['specs']) sql_objects = sql_gen_objects.convert(objects) run_template('templates/sql_schema.sql.mako', sql_objects, version, versionName, os.path.join(versionDirs['sqlSchema'], 'vistrails.sql'), False) run_template( 'templates/sql_delete.sql.mako', sql_objects, version, versionName, os.path.join(versionDirs['sqlSchema'], 'vistrails_drop.sql'), False) run_template( 'templates/sql.py.mako', sql_objects, version, versionName, os.path.join(versionDirs['sqlPersistence'], 'auto_gen.py'), True) if not options['n']: domainFile = os.path.join(baseDirs['persistence'], '__init__.py') f = open(domainFile, 'w') f.write(COPYRIGHT_NOTICE) f.write('from db.versions.%s.persistence import *\n' % \ versionName) f.close()
def main(argv=None): options = {} objects = None optionsUsage = {'a': ('generate all database information (-p -s -x)', False), 'b:': ('base directory', False, 'dir'), 'd:': ('versions directory', False, 'dir'), 'p': ('generate python domain classes', False), 's': ('generate sql schema and persistence classes', False), 'x': ('generate xml schema and persistence classes', False), 'v:': ('vistrail version tag', True, 'version'), 'm': ('make all directories', False), 'n': ('do not change current version', False)} optStr = ''.join(optionsUsage.keys()) optKeys = optStr.replace(':','') for idx in xrange(len(optKeys)): options[optKeys[idx]] = False try: (optlist, args) = getopt.getopt(sys.argv[1:], optStr) for opt in optlist: if opt[1] is not None and opt[1] != '': options[opt[0][1:]] = opt[1] else: options[opt[0][1:]] = True except getopt.GetoptError: usage(optionsUsage) return if options['b']: baseDir = options['b'] else: baseDir = BASE_DIR baseDirs = dirStructure(baseDir) if not options['v']: usage(optionsUsage) return version = options['v'] versionName = 'v' + version.replace('.', '_') if options['d']: versionsDir = options['d'] else: versionsDir = os.path.join(baseDir, 'versions') versionDir = os.path.join(versionsDir, versionName) versionDirs = dirStructure(versionDir) print baseDirs print versionDirs if options['m']: makeAllDirs(baseDirs) makeAllDirs(versionDirs) # copy specs to version for file in os.listdir(baseDirs['specs']): if file.endswith('.xml'): print 'copying %s' % file filename = os.path.join(baseDirs['specs'], file) toFile = os.path.join(versionDirs['specs'], file) shutil.copyfile(filename, toFile) if options['p'] or options['a']: # generate python domain objects print "generating python domain objects..." if objects is None: parser = AutoGenParser() objects = parser.parse(baseDirs['specs']) autoGen = AutoGen(objects) domainFile = os.path.join(versionDirs['domain'], 'auto_gen.py') f = open(domainFile, 'w') f.write(COPYRIGHT_NOTICE) f.write(autoGen.generatePythonCode()) f.close() if not options['n']: domainFile = os.path.join(baseDirs['domain'], '__init__.py') f = open(domainFile, 'w') f.write(COPYRIGHT_NOTICE) f.write('from db.versions.%s.domain import *\n' % \ versionName) f.close() if options['x'] or options['a']: # generate xml schema and dao objects print "generating xml schema and dao objects..." if objects is None: parser = AutoGenParser() objects = parser.parse(baseDirs['specs']) xmlAutoGen = XMLAutoGen(objects) # schemaFile = os.path.join(versionDirs['xmlSchema'], 'workflow.xsd') # f = open(schemaFile, 'w') # f.write(COPYRIGHT_NOTICE) # f.write(xmlAutoGen.generateSchema('workflow')) # f.close() schemaFile = os.path.join(versionDirs['xmlSchema'], 'vistrail.xsd') f = open(schemaFile, 'w') f.write(COPYRIGHT_NOTICE) f.write(xmlAutoGen.generateSchema('vistrail')) f.close() # schemaFile = os.path.join(versionDirs['xmlSchema'], 'log.xsd') # f = open(schemaFile, 'w') # f.write(COPYRIGHT_NOTICE) # f.write(xmlAutoGen.generateSchema('log')) # f.close() daoFile = os.path.join(versionDirs['xmlPersistence'], 'auto_gen.py') f = open(daoFile, 'w') f.write(COPYRIGHT_NOTICE) f.write(xmlAutoGen.generateDAO(versionName)) f.write(xmlAutoGen.generateDAOList()) f.close() # if not options['n']: # domainFile = os.path.join(baseDirs['xmlPersistence'], 'auto_gen.py') # f = open(domainFile, 'w') # f.write(COPYRIGHT_NOTICE) # f.write('from db.versions.%s.persistence.xml.auto_gen import *\n' % \ # versionName) # f.close() if options['s'] or options['a']: # generate sql schema and dao objects print "generating sql schema and dao objects..." if objects is None: parser = AutoGenParser() objects = parser.parse(baseDirs['specs']) sqlAutoGen = SQLAutoGen(objects) schemaFile = os.path.join(versionDirs['sqlSchema'], 'vistrails.sql') f = open(schemaFile, 'w') f.write(COPYRIGHT_NOTICE) f.write(sqlAutoGen.generateSchema()) f.close() schemaFile = os.path.join(versionDirs['sqlSchema'],'vistrails_drop.sql') f = open(schemaFile, 'w') f.write(COPYRIGHT_NOTICE) f.write(sqlAutoGen.generateDeleteSchema()) f.close() daoFile = os.path.join(versionDirs['sqlPersistence'], 'auto_gen.py') f = open(daoFile, 'w') f.write(COPYRIGHT_NOTICE) f.write(sqlAutoGen.generateDAO(versionName)) f.write(sqlAutoGen.generateDAOList()) f.close() # if not options['n']: # domainFile = os.path.join(baseDirs['sqlPersistence'], 'auto_gen.py') # f = open(domainFile, 'w') # f.write(COPYRIGHT_NOTICE) # f.write('from db.versions.%s.persistence.sql.auto_gen import *\n' % \ # versionName) # f.close() if not options['n']: domainFile = os.path.join(baseDirs['persistence'], '__init__.py') f = open(domainFile, 'w') f.write(COPYRIGHT_NOTICE) f.write('from db.versions.%s.persistence import *\n' % \ versionName) f.close()