46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from migrate.versioning.base import log,operations
|
|
from migrate.versioning import pathed,exceptions
|
|
|
|
|
|
class BaseScript(pathed.Pathed):
|
|
"""Base class for other types of scripts
|
|
All scripts have the following properties:
|
|
|
|
source (script.source())
|
|
The source code of the script
|
|
version (script.version())
|
|
The version number of the script
|
|
operations (script.operations())
|
|
The operations defined by the script: upgrade(), downgrade() or both.
|
|
Returns a tuple of operations.
|
|
Can also check for an operation with ex. script.operation(Script.ops.up)
|
|
"""
|
|
|
|
def __init__(self,path):
|
|
log.info('Loading script %s...' % path)
|
|
self.verify(path)
|
|
super(BaseScript, self).__init__(path)
|
|
log.info('Script %s loaded successfully' % path)
|
|
|
|
@classmethod
|
|
def verify(cls,path):
|
|
"""Ensure this is a valid script, or raise InvalidScriptError
|
|
This version simply ensures the script file's existence
|
|
"""
|
|
try:
|
|
cls.require_found(path)
|
|
except:
|
|
raise exceptions.InvalidScriptError(path)
|
|
|
|
def source(self):
|
|
fd = open(self.path)
|
|
ret = fd.read()
|
|
fd.close()
|
|
return ret
|
|
|
|
def run(self, engine):
|
|
raise NotImplementedError()
|