Try to re-work release building script a little.
[dcpomatic.git] / version.py
1 #!/usr/bin/python
2
3 import os
4 import sys
5 import datetime
6 import shutil
7 import copy
8
9 class Version:
10     def __init__(self, s):
11         self.pre = False
12         self.beta = None
13
14         if s.startswith("'"):
15             s = s[1:]
16         if s.endswith("'"):
17             s = s[0:-1]
18         
19         if s.endswith('pre'):
20             s = s[0:-3]
21             self.pre = True
22
23         b = s.find("beta")
24         if b != -1:
25             self.beta = int(s[b+4:])
26
27         p = s.split('.')
28         self.major = int(p[0])
29         self.minor = int(p[1])
30
31     def bump(self):
32         self.minor += 1
33         self.pre = False
34         self.beta = None
35
36     def bump_and_to_pre(self):
37         self.bump()
38         self.pre = True
39         self.beta = None
40
41     def to_release(self):
42         self.pre = False
43         self.beta = None
44
45     def bump_beta(self):
46         if self.pre:
47             self.pre = False
48             self.beta = 1
49         elif self.beta is not None:
50             self.beta += 1
51         elif self.beta is None:
52             self.beta = 1
53
54     def __str__(self):
55         s = '%d.%02d' % (self.major, self.minor)
56         if self.beta is not None:
57             s += 'beta%d' % self.beta
58         elif self.pre:
59             s += 'pre'
60
61         return s
62         
63 def rewrite_wscript(method):
64     f = open('wscript', 'rw')
65     o = open('wscript.tmp', 'w')
66     version = None
67     while 1:
68         l = f.readline()
69         if l == '':
70             break
71
72         s = l.split()
73         if len(s) == 3 and s[0] == "VERSION":
74             version = Version(s[2])
75             method(version)
76             print "Writing %s" % version
77             print >>o,"VERSION = '%s'" % version
78         else:
79             print >>o,l,
80     f.close()
81     o.close()
82
83     os.rename('wscript.tmp', 'wscript')
84     return version
85
86 def append_to_changelog(version):
87     f = open('ChangeLog', 'r')
88     c = f.read()
89     f.close()
90
91     f = open('ChangeLog', 'w')
92     now = datetime.datetime.now()
93     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))
94     f.write(c)