tahoe-lafs/misc/get-version.py

39 lines
1.2 KiB
Python

#! /usr/bin/python
"""Determine the version number of the current tree.
This should be run *after* make-version.py . It will emit a single line of
text to stdout, either of the form '0.2.0' if this is a release tree (i.e. no
patches have been added since the last release tag), or '0.2.0-34' (if 34
patches have been added since the last release tag). If the tree does not
have a well-formed version number, this will emit 'unknown'.
The version string thus calculated should exactly match the version string
determined by setup.py (when it creates eggs and source tarballs) and also
the version available in the code image when you do:
from allmydata import __version__
"""
import os.path, re
def get_version():
VERSIONFILE = "src/allmydata/version.py"
verstr = "unknown"
if os.path.exists(VERSIONFILE):
VSRE = re.compile("^verstr = ['\"]([^'\"]*)['\"]", re.M)
verstrline = open(VERSIONFILE, "rt").read()
mo = VSRE.search(verstrline)
if mo:
verstr = mo.group(1)
else:
raise RuntimeError("if version.py exists, it must be well-formed")
return verstr
if __name__ == '__main__':
verstr = get_version()
print verstr