if not self.configured:
raise NotConfiguredError(self.location)
+ def verifyVersion(self):
+ """
+ Checks if our version and the version number recorded in a file
+ are consistent.
+ """
+ real = self.application.detectVersion(self)
+ if not real:
+ raise VersionDetectionError
+ elif not str(real) == self.app_version.pristine_tag.partition('-')[2]:
+ raise VersionMismatchError(real, self.version)
+
@property
def configured(self):
"""Whether or not an autoinstall has been configured/installed for use."""
non-versioned data in an application.
"""
raise NotImplemented
+ def detectVersion(self, deployment):
+ """
+ Checks source files to determine the version manually.
+ """
+ return None
@property
def extractors(self):
"""
means that an upstream rebase occurred, and new tags were
pulled, but local user commits were never rebased.""" % self.tag
+class VersionDetectionError(Error):
+ def __str__(self):
+ return """
+
+ERROR: Could not detect the real version of the application."""
+
+class VersionMismatchError(Error):
+ def __init__(self, real_version, git_version):
+ self.real_version = real_version
+ self.git_version = git_version
+ def __str__(self):
+ return """
+
+ERROR: The detected version %s did not match the Git
+version %s.""" % (self.real_version, self.git_version)
+
_application_list = [
"mediawiki", "wordpress", "joomla", "e107", "gallery2",
"phpBB", "advancedbook", "phpical", "trac", "turbogears", "django",