summaryrefslogtreecommitdiff
path: root/migrate/versioning
diff options
context:
space:
mode:
authorchristian.simms <unknown>2008-05-30 21:02:44 +0000
committerchristian.simms <unknown>2008-05-30 21:02:44 +0000
commitf3bb29c75db6f2b456405923ec79b41a07517434 (patch)
tree948d52cd6952d8092f9930ad3d02e760bd20ee5c /migrate/versioning
parent95b666783e1feffcfa8716c201b0a1193a99f45b (diff)
downloadsqlalchemy-migrate-f3bb29c75db6f2b456405923ec79b41a07517434.tar.gz
finish implementing repository migration script
Diffstat (limited to 'migrate/versioning')
-rw-r--r--migrate/versioning/migrate_repository.py47
1 files changed, 45 insertions, 2 deletions
diff --git a/migrate/versioning/migrate_repository.py b/migrate/versioning/migrate_repository.py
index 77da77d..ab48690 100644
--- a/migrate/versioning/migrate_repository.py
+++ b/migrate/versioning/migrate_repository.py
@@ -1,6 +1,6 @@
''' Script to migrate repository. This shouldn't use any other migrate modules, so that it can work in any version. '''
-import os, sys
+import os, os.path, sys
def usage():
@@ -15,6 +15,21 @@ NOTE: You should probably make a backup before running this.
raise SystemExit(1)
+def deleteFile(filepath):
+ print ' Deleting file: %s' % filepath
+ os.remove(filepath)
+
+def moveFile(src, tgt):
+ print ' Moving file %s to %s' % (src, tgt)
+ if os.path.exists(tgt):
+ raise Exception('Cannot move file %s because target %s already exists' % (src, tgt))
+ os.rename(src, tgt)
+
+def deleteDirectory(dirpath):
+ print ' Deleting directory: %s' % dirpath
+ os.rmdir(dirpath)
+
+
def migrate_repository(repos):
print 'Migrating repository at: %s to new format' % repos
versions = '%s/versions' % repos
@@ -25,7 +40,35 @@ def migrate_repository(repos):
origdir = '%s/%s' % (versions, dir)
print ' Working on directory: %s' % origdir
files = os.listdir(origdir)
- pass # finish TODO xxx
+ files.sort()
+ for file in files:
+
+ # Delete compiled Python files.
+ if file.endswith('.pyc') or file.endswith('.pyo'):
+ deleteFile('%s/%s' % (origdir, file))
+
+ # Delete empty __init__.py files.
+ origfile = '%s/__init__.py' % origdir
+ if os.path.exists(origfile) and len(open(origfile).read()) == 0:
+ deleteFile(origfile)
+
+ # Move sql upgrade scripts.
+ if file.endswith('.sql'):
+ version, dbms, op, ext = file.split('.', 3)
+ origfile = '%s/%s' % (origdir, file)
+ # For instance: 2.postgres.upgrade.sql -> 002_postgres_upgrade.sql
+ tgtfile = '%s/%03d_%s_%s.sql' % (versions, int(version), dbms, op)
+ moveFile(origfile, tgtfile)
+
+ # Move Python upgrade script.
+ pyfile = '%s.py' % dir
+ pyfilepath = '%s/%s' % (origdir, pyfile)
+ if os.path.exists(pyfilepath):
+ tgtfile = '%s/%03d.py' % (versions, int(dir))
+ moveFile(pyfilepath, tgtfile)
+
+ # Try to remove directory. Will fail if it's not empty.
+ deleteDirectory(origdir)
if __name__ == '__main__':