diff options
Diffstat (limited to 'version_parser.py')
-rw-r--r-- | version_parser.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/version_parser.py b/version_parser.py new file mode 100644 index 00000000..793d77db --- /dev/null +++ b/version_parser.py @@ -0,0 +1,42 @@ +import os +import subprocess + + +VERSION_PY_PATH = 'gbp/version.py' + + +def _parse_changelog(): + """Get version from debian changelog and write it to gbp/version.py""" + popen = subprocess.Popen('dpkg-parsechangelog', stdout=subprocess.PIPE) + out, ret = popen.communicate() + for line in out.decode('utf-8').split('\n'): + if line.startswith('Version:'): + version = line.split(' ')[1].strip() + return version + + raise ValueError('Could not parse version from debian/changelog') + + +def _save_version_py(version): + with open(VERSION_PY_PATH, 'w') as f: + f.write('"The current gbp version number"\n') + f.write('gbp_version = "%s"\n' % version) + + +def _load_version(): + with open(VERSION_PY_PATH, 'r') as f: + version_py = f.read() + version_py_globals = {} + exec(version_py, version_py_globals) + return version_py_globals['gbp_version'] + + +def parse_and_fetch_version(): + if os.path.exists('debian/changelog'): + version = _parse_changelog() + _save_version_py(version) + # we could return with the version here, but instead we check that + # the file has been properly written and it can be loaded back + + version = _load_version() + return version |