diff --git a/.gitignore b/.gitignore index 7f7cccc..ec4754a 100644 --- a/.gitignore +++ b/.gitignore @@ -58,3 +58,5 @@ docs/_build/ # PyBuilder target/ +_version.py +*.swp diff --git a/content_plugins/__init__.py b/content_plugins/__init__.py index 433c34d..c7814dc 100644 --- a/content_plugins/__init__.py +++ b/content_plugins/__init__.py @@ -1,8 +1,14 @@ from django.conf import settings __version__ = '0.2.0' -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:]) USE_TRANSLATABLE_FIELDS = ( getattr(settings, 'CONTENT_PLUGINS_USE_TRANSLATABLE_FIELDS', False) or diff --git a/setup.py b/setup.py index a54cf78..1b364a4 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']