Exemple #1
0
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()
Exemple #2
0
  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()
Exemple #3
0
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()