[Treepkg-commits] r199 - in trunk: recipes/kde_enterprise_3_5 recipes/kde_enterprise_4 treepkg
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Thu May 7 16:25:10 CEST 2009
Author: bh
Date: 2009-05-07 16:25:10 +0200 (Thu, 07 May 2009)
New Revision: 199
Modified:
trunk/recipes/kde_enterprise_3_5/base.py
trunk/recipes/kde_enterprise_4/base.py
trunk/treepkg/subversion.py
Log:
Refactoring: Move the TagDetector class into the treepkg.subversion module
Modified: trunk/recipes/kde_enterprise_3_5/base.py
===================================================================
--- trunk/recipes/kde_enterprise_3_5/base.py 2009-05-07 14:11:14 UTC (rev 198)
+++ trunk/recipes/kde_enterprise_3_5/base.py 2009-05-07 14:25:10 UTC (rev 199)
@@ -9,80 +9,12 @@
import os
import time
-import inspect
-import re
import logging
import treepkg.packager
import treepkg.subversion
-class TagDetector(object):
- """Class to automatically find SVN tags and help package them
-
- The tags are found using three parameters:
- url -- The base url of the SVN tags directory to use
- pattern -- A regular expression matching the subdirectories to
- consider in the tag directory specified by the url
- subdir -- A subdirectory of the directory matched by pattern to
- export and use to determine revision number
-
- The subdir parameter is there to cope with the kdepim enterprise
- tags. The URL for a tag is of the form
- .../tags/kdepim/enterprise4.0.<date>.<rev> . Each such tag has
- subdirectories for kdepim, kdelibs, etc. The url and pattern are
- used to match the URL for the tag, and the subdir is used to select
- which part of the tag is meant.
-
- The subdir also determines which SVN directory's revision number is
- used. Normally, just appending the subdir to the tag URL would be
- enough for this, but the situation is more complex for
- kdebase_workspace and kdebase_runtime, whose code comes from
- different subdirectories of the kdebase-4.X-branch subdirectory (for
- enterprise4 tags). Here the revision number must be taken from
- kdebase-4.X-branch, but the URL to use when exporting the sources,
- must refer to e.g. kdebase-4.1-branch/kdebase_workspace. To achieve
- that, subdir may contain slashes to indicate subdirectories of
- subdirectories, but only the first part of subdir (up to the first
- slash) is used when determining the revision number.
- """
-
- def __init__(self, url, pattern, subdir):
- self.url = url
- self.pattern = re.compile(pattern)
- self.subdir = subdir
-
- def list_tags(self):
- matches = []
- if self.url:
- for tag in treepkg.subversion.list_url(self.url):
- if self.pattern.match(tag.rstrip("/")):
- matches.append(tag)
- return sorted(matches)
-
- def newest_tag_revision(self):
- """Determines the newest tag revision and returns (tagurl, revno)
- If no tag can be found, the method returns the tuple (None, None).
- """
- candidates = self.list_tags()
- urlrev = (None, None)
- if candidates:
- newest = candidates[-1]
- urlrev = self.determine_revision(self.url + "/" + newest,
- self.subdir)
- return urlrev
-
- def determine_revision(self, baseurl, subdir):
- urlrev = (None, None)
- revision_url = baseurl + "/" + subdir.split("/")[0]
- try:
- revision = treepkg.subversion.last_changed_revision(revision_url)
- urlrev = (baseurl + "/" + subdir, revision)
- except treepkg.subversion.SubversionError:
- pass
- return urlrev
-
-
class BaseSourcePackager(treepkg.packager.SourcePackager):
changemsg_template = None
@@ -127,7 +59,9 @@
tags_pattern = kw.pop("tags_pattern")
tags_subdir = kw.pop("tags_subdir")
super(BasePackageTrack, self).__init__(*args, **kw)
- self.tag_detector = TagDetector(tags_url, tags_pattern, tags_subdir)
+ self.tag_detector = treepkg.subversion.TagDetector(tags_url,
+ tags_pattern,
+ tags_subdir)
def packager_for_new_revision(self):
logging.info("Checking tags")
Modified: trunk/recipes/kde_enterprise_4/base.py
===================================================================
--- trunk/recipes/kde_enterprise_4/base.py 2009-05-07 14:11:14 UTC (rev 198)
+++ trunk/recipes/kde_enterprise_4/base.py 2009-05-07 14:25:10 UTC (rev 199)
@@ -10,80 +10,12 @@
import os
import time
import inspect
-import re
import logging
import treepkg.packager
import treepkg.subversion
-class TagDetector(object):
-
- """Class to automatically find SVN tags and help package them
-
- The tags are found using three parameters:
- url -- The base url of the SVN tags directory to use
- pattern -- A regular expression matching the subdirectories to
- consider in the tag directory specified by the url
- subdir -- A subdirectory of the directory matched by pattern to
- export and use to determine revision number
-
- The subdir parameter is there to cope with the kdepim enterprise
- tags. The URL for a tag is of the form
- .../tags/kdepim/enterprise4.0.<date>.<rev> . Each such tag has
- subdirectories for kdepim, kdelibs, etc. The url and pattern are
- used to match the URL for the tag, and the subdir is used to select
- which part of the tag is meant.
-
- The subdir also determines which SVN directory's revision number is
- used. Normally, just appending the subdir to the tag URL would be
- enough for this, but the situation is more complex for
- kdebase_workspace and kdebase_runtime, whose code comes from
- different subdirectories of the kdebase-4.X-branch subdirectory (for
- enterprise4 tags). Here the revision number must be taken from
- kdebase-4.X-branch, but the URL to use when exporting the sources,
- must refer to e.g. kdebase-4.1-branch/kdebase_workspace. To achieve
- that, subdir may contain slashes to indicate subdirectories of
- subdirectories, but only the first part of subdir (up to the first
- slash) is used when determining the revision number.
- """
-
- def __init__(self, url, pattern, subdir):
- self.url = url
- self.pattern = re.compile(pattern)
- self.subdir = subdir
-
- def list_tags(self):
- matches = []
- if self.url:
- for tag in treepkg.subversion.list_url(self.url):
- if self.pattern.match(tag.rstrip("/")):
- matches.append(tag)
- return sorted(matches)
-
- def newest_tag_revision(self):
- """Determines the newest tag revision and returns (tagurl, revno)
- If no tag can be found, the method returns the tuple (None, None).
- """
- candidates = self.list_tags()
- urlrev = (None, None)
- if candidates:
- newest = candidates[-1]
- urlrev = self.determine_revision(self.url + "/" + newest,
- self.subdir)
- return urlrev
-
- def determine_revision(self, baseurl, subdir):
- urlrev = (None, None)
- revision_url = baseurl + "/" + subdir.split("/")[0]
- try:
- revision = treepkg.subversion.last_changed_revision(revision_url)
- urlrev = (baseurl + "/" + subdir, revision)
- except treepkg.subversion.SubversionError:
- pass
- return urlrev
-
-
class BaseSourcePackager(treepkg.packager.SourcePackager):
def __init__(self, *args, **kw):
@@ -127,7 +59,9 @@
tags_pattern = kw.pop("tags_pattern")
tags_subdir = kw.pop("tags_subdir")
super(BasePackageTrack, self).__init__(*args, **kw)
- self.tag_detector = TagDetector(tags_url, tags_pattern, tags_subdir)
+ self.tag_detector = treepkg.subversion.TagDetector(tags_url,
+ tags_pattern,
+ tags_subdir)
def packager_for_new_revision(self):
logging.info("Checking tags")
Modified: trunk/treepkg/subversion.py
===================================================================
--- trunk/treepkg/subversion.py 2009-05-07 14:11:14 UTC (rev 198)
+++ trunk/treepkg/subversion.py 2009-05-07 14:25:10 UTC (rev 199)
@@ -9,6 +9,7 @@
import os
import shutil
+import re
import run
from cmdexpand import cmdexpand
@@ -163,3 +164,70 @@
def last_changed_revision(self):
"""Always returns 0"""
return 0
+
+
+class TagDetector(object):
+
+ """Class to automatically find SVN tags and help package them
+
+ The tags are found using three parameters:
+ url -- The base url of the SVN tags directory to use
+ pattern -- A regular expression matching the subdirectories to
+ consider in the tag directory specified by the url
+ subdir -- A subdirectory of the directory matched by pattern to
+ export and use to determine revision number
+
+ The subdir parameter is there to cope with the kdepim enterprise
+ tags. The URL for a tag is of the form
+ .../tags/kdepim/enterprise4.0.<date>.<rev> . Each such tag has
+ subdirectories for kdepim, kdelibs, etc. The url and pattern are
+ used to match the URL for the tag, and the subdir is used to select
+ which part of the tag is meant.
+
+ The subdir also determines which SVN directory's revision number is
+ used. Normally, just appending the subdir to the tag URL would be
+ enough for this, but the situation is more complex for
+ kdebase_workspace and kdebase_runtime, whose code comes from
+ different subdirectories of the kdebase-4.X-branch subdirectory (for
+ enterprise4 tags). Here the revision number must be taken from
+ kdebase-4.X-branch, but the URL to use when exporting the sources,
+ must refer to e.g. kdebase-4.1-branch/kdebase_workspace. To achieve
+ that, subdir may contain slashes to indicate subdirectories of
+ subdirectories, but only the first part of subdir (up to the first
+ slash) is used when determining the revision number.
+ """
+
+ def __init__(self, url, pattern, subdir):
+ self.url = url
+ self.pattern = re.compile(pattern)
+ self.subdir = subdir
+
+ def list_tags(self):
+ matches = []
+ if self.url:
+ for tag in list_url(self.url):
+ if self.pattern.match(tag.rstrip("/")):
+ matches.append(tag)
+ return sorted(matches)
+
+ def newest_tag_revision(self):
+ """Determines the newest tag revision and returns (tagurl, revno)
+ If no tag can be found, the method returns the tuple (None, None).
+ """
+ candidates = self.list_tags()
+ urlrev = (None, None)
+ if candidates:
+ newest = candidates[-1]
+ urlrev = self.determine_revision(self.url + "/" + newest,
+ self.subdir)
+ return urlrev
+
+ def determine_revision(self, baseurl, subdir):
+ urlrev = (None, None)
+ revision_url = baseurl + "/" + subdir.split("/")[0]
+ try:
+ revision = last_changed_revision(revision_url)
+ urlrev = (baseurl + "/" + subdir, revision)
+ except SubversionError:
+ pass
+ return urlrev
More information about the Treepkg-commits
mailing list