Commits

Patrick Mézard committed db7526e

csharp: tag after parent of -SNAPSHOT version

The assembly version is now based on the most recent non-SNAPSHOT pom.xml
ancestor. For instance, 4.6-SNAPSHOT will now be 4.5.0.10 instead of
4.6.0.10.

Comments (0)

Files changed (2)

csharp/PhoneNumbers/Properties/AssemblyInfo.cs

 //
 // You can specify all the values or you can default the Build and Revision Numbers 
 // by using the '*' as shown below:
-// [assembly: AssemblyVersion("4.6.0.4")]
-[assembly: AssemblyVersion("4.6.0.4")]
-[assembly: AssemblyFileVersion("4.6.0.4")]
+// [assembly: AssemblyVersion("4.5.0.5")]
+[assembly: AssemblyVersion("4.5.0.5")]
+[assembly: AssemblyFileVersion("4.5.0.5")]

csharp/lib/version.py

 # Update assembly version number based on Java pom.xml file
-import os, re, subprocess
+import os, sys, re, subprocess
 
 def haschanges(rootdir):
     p = subprocess.Popen(['hg', '-R', rootdir, 'id', '-n'],
     stdout = p.communicate()[0]
     return stdout.strip().endswith('+')
 
-def getjavaver(rootdir):
-    # Extract from pom file
-    pompath = os.path.join(rootdir, 'java', 'pom.xml')
-    data = file(pompath, 'rb').read()
-    m = re.search(r'<version>(\d+.\d+)(?:-SNAPSHOT)?</version>', data)
-    if not m:
-        raise Exception('cannot extract version number from pom file')
-    return tuple(int(p) for p in m.group(1).split('.'))[:2]
-
-asmfile = 'csharp/PhoneNumbers/Properties/AssemblyInfo.cs'
-
-def getcsharpprevbuild(rootdir):
-    asmpath = os.path.join(rootdir, asmfile)
-    p = subprocess.Popen(['hg', 'cat', '--rev', '.', asmpath],
+def hgcat(rootdir, path, rev):
+    path = os.path.join(rootdir, path)
+    p = subprocess.Popen(['hg', 'cat', '--rev', rev, path],
                          shell=True,
                          stdout=subprocess.PIPE)
     stdout = p.communicate()[0]
     if p.returncode:
         raise Exception('hg cat failed')
+    return stdout
+
+def readjavaver(rootdir, rev):
+    # Extract from pom file
+    data = hgcat(rootdir, 'java/pom.xml', rev)
+    m = re.search(r'<version>(\d+.\d+)(-SNAPSHOT)?</version>', data)
+    if not m:
+        raise Exception('cannot extract version number from pom file')
+    snapshot = bool(m.group(2))
+    return tuple(int(p) for p in m.group(1).split('.'))[:2], snapshot
+
+def getjavaver(rootdir):
+    rev = '.'
+    while True:
+        ver, snapshot = readjavaver(rootdir, rev)
+        if not snapshot:
+            return ver
+        rev = 'p1(%s)' % rev
+
+asmfile = 'csharp/PhoneNumbers/Properties/AssemblyInfo.cs'
+
+def getcsharpprevbuild(rootdir):
+    stdout = hgcat(rootdir, asmfile, '.')
     m = re.search(r'AssemblyVersion\("(\d+\.\d+\.\d+\.\d+)', stdout)
     if not m:
         raise Exception('cannot extract version from AssemblyInfo.cs')
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.