chiark / gitweb /
Simplify 'Tags <pattern>' by using regex on top of vcs.gettags()
authorDaniel Martí <mvdan@mvdan.cc>
Mon, 10 Feb 2014 11:20:22 +0000 (12:20 +0100)
committerDaniel Martí <mvdan@mvdan.cc>
Mon, 10 Feb 2014 11:20:22 +0000 (12:20 +0100)
This automagically enables support for pattern-based tags for all vcs types
that support Tags

fdroidserver/checkupdates.py
fdroidserver/common.py

index 46fe7f7effaedaca5140e1fa20a95da6dad527c9..8c856f348dd4a33388d1b65bbc25d69619e05ba8 100644 (file)
@@ -98,8 +98,6 @@ def check_tags(app, pattern):
 
         if repotype not in ('git', 'git-svn', 'hg', 'bzr'):
             return (None, 'Tags update mode only works for git, hg, bzr and git-svn repositories currently', None)
-        if pattern and repotype not in ('git'):
-            return (None, 'Tags with pattern update mode only works for git repositories currently', None)
 
         # Set up vcs interface and make sure we have the latest code...
         vcs = common.getvcs(app['Repo Type'], app['Repo'], build_dir)
@@ -117,7 +115,11 @@ def check_tags(app, pattern):
         hver = None
         hcode = "0"
 
-        tags = vcs.gettags_pattern(pattern) if pattern else vcs.gettags()
+        tags = vcs.gettags()
+        if pattern:
+            print pattern
+            pat = re.compile(pattern)
+            tags = [tag for tag in tags if pat.match(tag)]
 
         for tag in tags:
             logging.info("Check tag: '{0}'".format(tag))
index 4509338bb663f96df08ab4b3d9af5e0c6e4c810e..d9721d8c0f622075fa9688a8dc700eee3fcd8855 100644 (file)
@@ -275,10 +275,6 @@ class vcs:
     def gettags(self):
         raise VCSException('gettags not supported for this vcs type')
 
-    # Get a list of all known tags
-    def gettags_pattern(self, pattern):
-        raise VCSException('gettags with pattern not supported for this vcs type')
-
     # Get current commit reference (hash, revision, etc)
     def getref(self):
         raise VCSException('getref not supported for this vcs type')
@@ -356,11 +352,6 @@ class vcs_git(vcs):
         p = FDroidPopen(['git', 'tag'], cwd=self.local)
         return p.stdout.splitlines()
 
-    def gettags_pattern(self, pattern):
-        self.checkrepo()
-        p = FDroidPopen(['git', 'tag', '-l', pattern], cwd=self.local)
-        return p.stdout.splitlines()
-
 
 class vcs_gitsvn(vcs):