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()