def add(number, sqlUp, sqlDown, message): """Adds a new migration.""" config = cmds.init.config() MIGRATION_DIR = config["migrations_dir"] MIGRATION_DIR = os.path.join (repo.repopath(), MIGRATION_DIR) PATH = MIGRATION_DIR + "/%s-%s.conf" numberWithZeros = str(number).zfill(3) messageAlias = message.lower().replace (' ', '_').replace ('.', '').replace ('`', '').replace ("\n", '').replace(':', '')[0:16] revision = ConfigObj (PATH % (numberWithZeros, messageAlias)) revision["number"] = number revision["message"] = message revision["up"] = sqlUp revision["down"] = sqlDown revision["author"] = current_user() revision["date"] = str(datetime.datetime.today()) revision.write()
def __from_file (self, file): """Create migration object from migration file.""" config = ConfigObj (file) self.number = config["number"] self.message = config["message"] self.sqlUp = config["up"] self.sqlDown = config["down"] self.filename = file if "date" in config: self.date = config["date"] else: config["date"] = self.date = str(datetime.datetime.fromtimestamp (os.path.getctime(file))) config.write() if "author" in config: self.author = config["author"] else: config["author"] = self.author = current_user() config.write()
def run (args): """Initializes a Mygrate repository.""" (path_to_mysql, path_to_mysqldump) = search_for_executables() if is_initialized(): print """abort: Mygrate repository is already initialized in this directory""" sys.exit() try: os.makedirs (".mygrate/store") except: pass migration_dir_exists = False dir_default = "migrations" dir = dir_default if os.path.isdir(dir): migration_dir_exists = True if not os.path.isdir (dir_default): dir = raw_input ("The directory to store the migration files (default: %s): " % dir_default) if not dir: dir = dir_default os.mkdir (dir) db_host_default = "localhost" db_host = raw_input ("The MySQL host (default: %s): " % db_host_default) if not db_host: db_host = db_host_default db_user = raw_input ("The user for MySQL DB: ") db_pass = raw_input ("The password for %s@%s: " % (db_user, db_host)) db_db = raw_input ("The MySQL database name at %s: " % db_host) vcs = raw_input ("Version control system you are using (svn/hg/git/?): ") config = ConfigObj(PATH_CONF_MAIN) config["migrations_dir"] = dir config["db_host"] = db_host config["db_user"] = db_user config["db_pass"] = db_pass config["db_db"] = db_db config["vcs"] = vcs config["mysql"] = path_to_mysql config["mysqldump"] = path_to_mysqldump config.write() revisions = ConfigObj (PATH_REV_MAIN) revisions["current"] = "0" revisions.write() print """Migration repos initialized successfully.""" if migration_dir_exists: import cmds.update cmds.update.run()