Try to re-work release building script a little.
authorCarl Hetherington <cth@carlh.net>
Wed, 5 Dec 2012 00:14:01 +0000 (00:14 +0000)
committerCarl Hetherington <cth@carlh.net>
Wed, 5 Dec 2012 00:14:01 +0000 (00:14 +0000)
.gitignore
release
version-test.py [new file with mode: 0644]
version.py [new file with mode: 0644]

index 0ddc1034587674153dc7625824083a5aa157f362..3f496b4cb54ba05c90791a609e0dc6d9011022e2 100644 (file)
@@ -17,3 +17,5 @@ doc/manual/html
 doc/manual/pdf
 doc/manual/extensions.ent
 .be/id-cache
+*.pyc
+
diff --git a/release b/release
index ba56b0d9c3e40f449f555edf4ceb99fb0fc3c88a..c1f84ce7a0f45c16533a6b25fdc780c35b212a28 100755 (executable)
--- a/release
+++ b/release
@@ -4,58 +4,16 @@ import os
 import sys
 import datetime
 import shutil
+import version
 
 def command(c):
     os.system(c)
     print c
 
-def release_version(s):
-    s = s[1:-1]
-    if s.endswith('pre'):
-        s = s[0:-3]
-    p = s.split('.')
-    return '0.%02d' % int(p[1])
-
-def new_pre_version(s):
-    s = s[1:-1]
-    p = s.split('.')
-    return '0.%02dpre' % (int(p[1]) + 1)
-
-def rewrite_wscript(version_maker):
-    f = open('wscript', 'rw')
-    o = open('wscript.tmp', 'w')
-    while 1:
-        l = f.readline()
-        if l == '':
-            break
-
-        s = l.split()
-        if len(s) == 3 and s[0] == "VERSION":
-            v = version_maker(s[2])
-            print "REWRITE %s -> %s" % (s[2], v)
-            print >>o,"VERSION = '%s'" % v
-        else:
-            print >>o,l,
-    f.close()
-    o.close()
-
-    os.rename('wscript.tmp', 'wscript')
-    return v
-
-def append_to_changelog(version):
-    f = open('ChangeLog', 'r')
-    c = f.read()
-    f.close()
-
-    f = open('ChangeLog', 'w')
-    now = datetime.datetime.now()
-    f.write('%d-%02d-%02d  Carl Hetherington  <cth@carlh.net>\n\n\t* Version %s released.\n\n' % (now.year, now.month, now.day, version))
-    f.write(c)
-
 command("git checkout master")
-
-release_version_string = rewrite_wscript(release_version)
-append_to_changelog(release_version_string)
+    
+release_version_string = version.rewrite_wscript(version.Version.to_release)
+version.append_to_changelog(release_version_string)
 
 command("git diff")
 if (raw_input() != "y"):
@@ -74,7 +32,7 @@ shutil.copy(os.path.join('build', 'windows', 'DVD-o-matic %s 32-bit Installer.ex
 command("./builds/windows-64")
 shutil.copy(os.path.join('build', 'windows', 'DVD-o-matic %s 64-bit Installer.exe' % release_version_string), '.')
 
-rewrite_wscript(new_pre_version)
+version.rewrite_wscript(version.Version.bump_and_to_pre)
 
 command("git diff")
 if (raw_input() != "y"):
diff --git a/version-test.py b/version-test.py
new file mode 100644 (file)
index 0000000..d5352b5
--- /dev/null
@@ -0,0 +1,46 @@
+#!/usr/bin/python
+
+import version
+
+a = version.Version("0.51")
+assert(a.major == 0)
+assert(a.minor == 51)
+assert(a.pre == False)
+assert(a.beta == None)
+assert(str(a) == "0.51")
+
+a.bump_and_to_pre()
+assert(a.major == 0)
+assert(a.minor == 52)
+assert(a.pre == True)
+assert(a.beta == None)
+assert(str(a) == "0.52pre")
+
+a.bump()
+assert(a.major == 0)
+assert(a.minor == 53)
+assert(a.pre == False)
+assert(a.beta == None)
+assert(str(a) == "0.53")
+
+a.to_pre()
+a.bump_beta()
+assert(a.major == 0)
+assert(a.minor == 53)
+assert(a.pre == False)
+assert(a.beta == 1)
+assert(str(a) == "0.53beta1")
+
+a.bump_beta()
+assert(a.major == 0)
+assert(a.minor == 53)
+assert(a.pre == False)
+assert(a.beta == 2)
+assert(str(a) == "0.53beta2")
+
+a.to_release()
+assert(a.major == 0)
+assert(a.minor == 53)
+assert(a.pre == False)
+assert(a.beta == None)
+assert(str(a) == "0.53")
diff --git a/version.py b/version.py
new file mode 100644 (file)
index 0000000..c11a623
--- /dev/null
@@ -0,0 +1,94 @@
+#!/usr/bin/python
+
+import os
+import sys
+import datetime
+import shutil
+import copy
+
+class Version:
+    def __init__(self, s):
+        self.pre = False
+        self.beta = None
+
+        if s.startswith("'"):
+            s = s[1:]
+        if s.endswith("'"):
+            s = s[0:-1]
+        
+        if s.endswith('pre'):
+            s = s[0:-3]
+            self.pre = True
+
+        b = s.find("beta")
+        if b != -1:
+            self.beta = int(s[b+4:])
+
+        p = s.split('.')
+        self.major = int(p[0])
+        self.minor = int(p[1])
+
+    def bump(self):
+        self.minor += 1
+        self.pre = False
+        self.beta = None
+
+    def bump_and_to_pre(self):
+        self.bump()
+        self.pre = True
+        self.beta = None
+
+    def to_release(self):
+        self.pre = False
+        self.beta = None
+
+    def bump_beta(self):
+        if self.pre:
+            self.pre = False
+            self.beta = 1
+        elif self.beta is not None:
+            self.beta += 1
+        elif self.beta is None:
+            self.beta = 1
+
+    def __str__(self):
+        s = '%d.%02d' % (self.major, self.minor)
+        if self.beta is not None:
+            s += 'beta%d' % self.beta
+        elif self.pre:
+            s += 'pre'
+
+        return s
+        
+def rewrite_wscript(method):
+    f = open('wscript', 'rw')
+    o = open('wscript.tmp', 'w')
+    version = None
+    while 1:
+        l = f.readline()
+        if l == '':
+            break
+
+        s = l.split()
+        if len(s) == 3 and s[0] == "VERSION":
+            version = Version(s[2])
+            method(version)
+            print "Writing %s" % version
+            print >>o,"VERSION = '%s'" % version
+        else:
+            print >>o,l,
+    f.close()
+    o.close()
+
+    os.rename('wscript.tmp', 'wscript')
+    return version
+
+def append_to_changelog(version):
+    f = open('ChangeLog', 'r')
+    c = f.read()
+    f.close()
+
+    f = open('ChangeLog', 'w')
+    now = datetime.datetime.now()
+    f.write('%d-%02d-%02d  Carl Hetherington  <cth@carlh.net>\n\n\t* Version %s released.\n\n' % (now.year, now.month, now.day, version))
+    f.write(c)