diff options
-rwxr-xr-x | setup.py | 27 | ||||
-rw-r--r-- | version_parser.py | 42 |
2 files changed, 45 insertions, 24 deletions
@@ -17,30 +17,9 @@ # <http://www.gnu.org/licenses/> # END OF COPYRIGHT # -import subprocess -from setuptools import setup, find_packages import os - - -def fetch_version(): - """Get version from debian changelog and write it to gbp/version.py""" - version = "0.0" - - try: - 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() - break - except OSError: - pass # Failing is fine, we just can't print the version then - - with open('gbp/version.py', 'w') as f: - f.write('"The current gbp version number"\n') - f.write('gbp_version = "%s"\n' % version) - - return version +from setuptools import setup, find_packages +from version_parser import parse_and_fetch_version def readme(): @@ -56,7 +35,7 @@ def setup_requires(): setup(name="gbp", - version=fetch_version(), + version=parse_and_fetch_version(), author=u'Guido Günther', author_email='agx@sigxcpu.org', url='https://honk.sigxcpu.org/piki/projects/git-buildpackage/', 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 |