4 # lily-python.py -- implement general LilyPond-wide python stuff
6 # source file of the GNU LilyPond music typesetter
8 # (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
23 version_re = regex.compile('\\version *\"\(.*\)\"')
24 make_assign_re = regex.compile('^\([A-Z_]*\) *= *\(.*\)$')
26 def version_tuple(file):
27 lines = file.readlines()
33 if make_assign_re.search(l) <> -1:
34 nm = make_assign_re.group(1)
35 val = make_assign_re.group(2)
36 if nm == 'TOPLEVEL_MAJOR_VERSION':
38 elif nm == 'TOPLEVEL_MINOR_VERSION':
40 elif nm == 'TOPLEVEL_PATCH_LEVEL':
42 elif nm == 'TOPLEVEL_MY_PATCH_LEVEL':
46 def next_version(tup):
47 return (tup[0], tup[1], tup[2] + 1, tup[3]);
49 def prev_version(tup):
52 return (tup[0], tup[1], tup[2], '');
54 return (tup[0], tup[1] -1, tup[2], '');
56 return (tup[0], tup[1], tup[2] - 1, '');
60 return 'lilypond-' + version_tuple_to_str(v)
63 return dirname(v) + '.tar.gz'
65 def released_tarball(v):
66 return lilydirs.release_dir + tarball(v)
69 def tuple_to_list(tup):
75 def version_str_to_tuple(str):
82 return (atoi(t[0]), atoi(t[1]), atoi(t[2]), mypatch)
86 def guess_mudela_version(filename):
91 if version_re.search(l) <> -1:
92 return version_re.group(1)
96 def version_tuple_to_str(tup):
99 mypatch = '.' + tup[3]
101 return ('%d.%d.%d' % tup[0:3]) + mypatch
106 self.topdir = os.environ['LILYPOND_SOURCEDIR'] + '/'
108 self.topdir = os.environ['HOME'] + 'musix/current'
110 self.release_dir = self.topdir + '../releases/'
111 self.patch_dir = self.topdir + '../patches/'
113 def version_tuple(self):
114 f = open (self.topdir + 'VERSION')
120 lilydirs = Lilydirs()
122 if __name__ == '__main__':
123 v= lilydirs.version_tuple()
124 print v, prev_version(v), next_version(v)
125 mv = guess_mudela_version(lilydirs.topdir + 'init/symbol.ly')
127 print version_tuple_to_str(pv), prev_version(pv), next_version(pv)
128 print version_tuple_to_str((0,1,1,''))
129 print mv, version_str_to_tuple(mv)