Example #1
0
def run (args):
  """Removes all Mygrate data (cancels mygrate init)."""
  cmds.init.require_init()
  path = repo.repopath() + '/.mygrate'
  print "Removing everything under %s." % path
  utils.shell ('rm -rf %s' % path)
  print "Mygrate repo successfully removed. Use mygrate init to reinitialize it."
Example #2
0
def config():
  path = os.path.join (repo.repopath(), PATH_CONF_MAIN)
  try:
    config = ConfigObj(path)
    return config
  except IOError:
    return False
  return False
Example #3
0
def revisions():
  path = os.path.join (repo.repopath(), PATH_REV_MAIN)

  try:
    config = ConfigObj(path)
    return config
  except IOError:
    return False
  return False
Example #4
0
def latest_number():
  """Returns greates migration number available."""
  config = cmds.init.config()
  MIGRATION_DIR = config["migrations_dir"]
  MIGRATION_DIR = os.path.join (repo.repopath(), MIGRATION_DIR)

  migration_numbers = [int(file[0:3]) for file in os.listdir (MIGRATION_DIR)]
  if not len (migration_numbers):
    return 0
  return max (migration_numbers)
Example #5
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()
Example #6
0
  def __init__ (self, number):
    """Create a new migration"""
    config = cmds.init.config()
    MIGRATION_DIR = config["migrations_dir"]
    MIGRATION_DIR = os.path.join (repo.repopath(), MIGRATION_DIR)

    self.number = ''
    self.message = ''
    self.sqlUp = ''
    self.sqlDown = ''
    self.filename = ''
    self.author = ''
    self.date = ''
    self.state_to_rollback = db.dump.restore_point()
    
    numberWithZeros = str(number).zfill(3)
    filename = [file for file in os.listdir (MIGRATION_DIR) if file.startswith(numberWithZeros)][0]
    self.__from_file (MIGRATION_DIR + os.sep + filename)
Example #7
0
#!/usr/bin/env python

import cmds.init
import db.dump
import sys
import cPickle
import repo.migration
import os.path
import repo

HISTORY_PATH = ".mygrate/store/history"
HISTORY_PATH = os.path.join (repo.repopath(), HISTORY_PATH)

def load():
  return History()

def refresh():
  History().get_fresh_from_migrations().save()

class History:
  def __init__ (self):
    self.History = { }
    try:
      self.History = cPickle.load(open(HISTORY_PATH))
      current_history = self.History
      self.get_fresh_from_migrations()
      if current_history != self.History:
        self.save()
    except:
      pass
      
Example #8
0
#!/usr/bin/env python

import cmds.init
import db.dump
import sys
import os.path
import repo


REV_PATH = ".mygrate/store/%s.sql"
REV_PATH = os.path.join (repo.repopath(), REV_PATH)

def set_current(number):
  revisions = cmds.init.revisions()
  revisions["current"] = number
  revisions.write()  

def current():
  return latest_number()

def latest_number():
  """Returns number of latest revision."""
  revisions = cmds.init.revisions()
  return int(revisions["current"])

def latest():
  """Returns latest state of SQL saved or empty string if there are no revisions yet."""
  current = latest_number()
  if current <= 0:
   return ''
  return open (REV_PATH % current).read()