From 15b7bb2aa8da05bd0eaf03b123bba5ec72b4dab5 Mon Sep 17 00:00:00 2001 From: j Date: Wed, 6 Jun 2018 12:38:10 +0200 Subject: [PATCH] compute version git and update _version.py --- .gitignore | 1 + requestuser/__init__.py | 8 ++++++++ setup.py | 25 +++++++++++++++++++++---- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 4c79d23..7a93212 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ build dist __pycache__ +_version.py diff --git a/requestuser/__init__.py b/requestuser/__init__.py index ae1e04a..43d8749 100644 --- a/requestuser/__init__.py +++ b/requestuser/__init__.py @@ -1,3 +1,11 @@ __version__ = '0.1' +try: + from ._version import __version__ +except ImportError: + pass + +VERSION = __version__.split('+') +VERSION = tuple(list(map(int, VERSION[0].split('.'))) + VERSION[1:]) + from .requestuser import get_request_user, RequestUserMiddleware diff --git a/setup.py b/setup.py index 364da25..fe1bcf8 100755 --- a/setup.py +++ b/setup.py @@ -1,13 +1,30 @@ #!/usr/bin/env python3 from setuptools import find_packages, setup +import os +import re +import subprocess def get_version(prefix): - import os - 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'] + setup( name='django-requestuser', version=get_version('requestuser'),