diff --git a/.gitignore b/.gitignore index 7f7cccc..e9153cb 100644 --- a/.gitignore +++ b/.gitignore @@ -58,3 +58,4 @@ docs/_build/ # PyBuilder target/ +_version.py diff --git a/setup.py b/setup.py index 11ec636..a3cf634 100644 --- a/setup.py +++ b/setup.py @@ -1,14 +1,30 @@ #!/usr/bin/env python from io import open -import os from setuptools import setup, find_packages +import os +import re +import subprocess def get_version(prefix): - import re - with open(os.path.join(prefix, '__init__.py')) as fd: - metadata = dict(re.findall("__([a-z]+)__ = '([^']+)'", fd.read())) + if os.path.exists('.git'): + parts = subprocess.check_output(['git', 'describe', '--tags']).decode().strip().split('-') + version = '{}.{}+{}'.format(*parts) + version_py = "__version__ = '{}'".format(version) + _version = os.path.join(prefix, '_version.py') + if not os.path.exists(_version) or open(_version).read().strip() != version_py: + with open(_version, 'w') as fd: + fd.write(version_py) + return version + else: + for f in ('_version.py', '__init__.py'): + f = os.path.join(prefix, f) + if os.path.exists(f): + with open(f) as fd: + metadata = dict(re.findall("__([a-z]+)__ = '([^']+)'", fd.read())) + if 'version' in metadata: + break return metadata['version'] diff --git a/shared/utils/__init__.py b/shared/utils/__init__.py index 3db79a6..849caa4 100644 --- a/shared/utils/__init__.py +++ b/shared/utils/__init__.py @@ -3,8 +3,14 @@ from __future__ import unicode_literals # Erik Stein , 2007-2016 __version__ = '0.2.1' -VERSION = tuple(int(d) for d in __version__.split('.')) +try: + from ._version import __version__ +except ImportError: + pass + +VERSION = __version__.split('+') +VERSION = tuple(list(map(int, VERSION[0].split('.'))) + VERSION[1:]) try: from django.utils.translation import ugettext_lazy as _