[Checkins] SVN: keas.build/trunk/src/keas/build/package.py trying to get it working with an other project

Adam Groszer agroszer at gmail.com
Tue Aug 11 10:14:59 EDT 2009


Log message for revision 102677:
  trying to get it working with an other project

Changed:
  U   keas.build/trunk/src/keas/build/package.py

-=-
Modified: keas.build/trunk/src/keas/build/package.py
===================================================================
--- keas.build/trunk/src/keas/build/package.py	2009-08-11 12:58:36 UTC (rev 102676)
+++ keas.build/trunk/src/keas/build/package.py	2009-08-11 14:14:59 UTC (rev 102677)
@@ -101,9 +101,17 @@
             req.add_header("Authorization", "Basic %s" % base64string)
 
         soup = BeautifulSoup.BeautifulSoup(urllib2.urlopen(req).read())
-        versions = [tag.contents[0][len(self.pkg)+1:-7]
-                    for tag in soup('a')
-                    if tag.contents[0].startswith(self.pkg)]
+        #TODO: handle real pypi index page!
+
+        VERSION = re.compile(self.pkg+r'-(\d\.\d(\.\d)?)')
+
+        versions = []
+        for tag in soup('a'):
+            cntnt = tag.contents[0]
+            m = VERSION.search(cntnt)
+            if m:
+                versions.append(m.group(1))
+
         logger.debug('All versions: ' + ' '.join(versions))
 
         # filter versions by ones that came from the branch we are building from.
@@ -125,17 +133,21 @@
             url = urllib.basejoin(url, self.customPath.split('%s')[0])
         url += 'branches'
         logger.debug('Branches URL: ' + url)
-        req = urllib2.Request(url)
 
-        if self.svnRepositoryUsername:
-            base64string = base64.encodestring('%s:%s' % (
-                self.svnRepositoryUsername, self.svnRepositoryPassword))[:-1]
-            req.add_header("Authorization", "Basic %s" % base64string)
+        xml = base.do('svn ls --xml ' + url)
+        elem = lxml.etree.fromstring(xml)
 
-        soup = BeautifulSoup.BeautifulSoup(urllib2.urlopen(req).read())
-        branches  = [tag.contents[0][:-1]
-                     for tag in soup('ul')[0]('a')
-                     if tag.contents[0] != '..']
+        branches = [elem.text for elem in elem.findall('./list/entry/name')]
+
+        #if self.svnRepositoryUsername:
+        #    base64string = base64.encodestring('%s:%s' % (
+        #        self.svnRepositoryUsername, self.svnRepositoryPassword))[:-1]
+        #    req.add_header("Authorization", "Basic %s" % base64string)
+        #
+        #soup = BeautifulSoup.BeautifulSoup(urllib2.urlopen(req).read())
+        #branches  = [tag.contents[0][:-1]
+        #             for tag in soup('ul')[0]('a')
+        #             if tag.contents[0] != '..']
         logger.debug('Branches: ' + ' '.join(branches))
         return branches
 
@@ -182,19 +194,25 @@
         file(os.path.join(tagDir, 'setup.py'), 'w').write(setuppy)
         # 3.3. Check it all in
         base.do('svn ci -m "Prepare for release." %s' %(tagDir))
-        # 3.4. Create distribution
-        base.do('cd %s && python setup.py sdist' %(tagDir))
 
         # 4. Upload the distribution
-        distributionFileName = os.path.join(
-            tagDir, 'dist', '%s-%s.tar.gz' %(self.pkg, version))
-        if not self.options.noUpload:
-            base.uploadFile(
-                distributionFileName,
-                self.packageIndexUrl,
-                self.packageIndexUsername, self.packageIndexPassword,
-                self.options.offline)
+        if self.uploadType == 'internal':
+            # 3.4. Create distribution
+            base.do('cd %s && python setup.py sdist' %(tagDir))
 
+            # TODO: windoze creates .zip!
+            distributionFileName = os.path.join(
+                tagDir, 'dist', '%s-%s.tar.gz' %(self.pkg, version))
+            if not self.options.noUpload:
+                base.uploadFile(
+                    distributionFileName,
+                    self.packageIndexUrl,
+                    self.packageIndexUsername, self.packageIndexPassword,
+                    self.options.offline)
+        elif self.uploadType == 'setup.py':
+            # 3.4. Create distribution and upload in one step
+            base.do('cd %s && python setup.py sdist register upload' %(tagDir))
+
         # 5. Update the start branch to the next devel version
         if not self.options.noBranchUpdate:
             # 5.1. Check out the branch.
@@ -235,6 +253,13 @@
             base.BUILD_SECTION, 'svn-repos-username')
         self.svnRepositoryPassword = config.get(
             base.BUILD_SECTION, 'svn-repos-password')
+
+        try:
+            self.uploadType = config.get(
+                base.BUILD_SECTION, 'upload-type')
+        except ConfigParser.NoOptionError:
+            self.uploadType = 'internal'
+
         # 1.3. Determine the possibly custom path.
         for pkg in config.get(base.BUILD_SECTION, 'packages').split():
             if pkg.startswith(self.pkg):



More information about the Checkins mailing list