From 40c36996cf628aa0a0b6c32f24e83a269932b0ac Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 5 Dec 2012 00:14:01 +0000 Subject: [PATCH] Try to re-work release building script a little. --- .gitignore | 2 ++ release | 52 +++------------------------ version-test.py | 46 ++++++++++++++++++++++++ version.py | 94 +++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 147 insertions(+), 47 deletions(-) create mode 100644 version-test.py create mode 100644 version.py diff --git a/.gitignore b/.gitignore index 0ddc10345..3f496b4cb 100644 --- a/.gitignore +++ b/.gitignore @@ -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 ba56b0d9c..c1f84ce7a 100755 --- 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 \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 index 000000000..d5352b55b --- /dev/null +++ b/version-test.py @@ -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 index 000000000..c11a623d2 --- /dev/null +++ b/version.py @@ -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 \n\n\t* Version %s released.\n\n' % (now.year, now.month, now.day, version)) + f.write(c) -- 2.30.2