diff --git a/featherlight_js/__init__.py b/featherlight_js/__init__.py index c1913dc..e69de29 100644 --- a/featherlight_js/__init__.py +++ b/featherlight_js/__init__.py @@ -1,2 +0,0 @@ -__version__ = '1.7.9' -VERSION = tuple(int(d) for d in __version__.split('.')) diff --git a/setup.py b/setup.py index f9c59b5..324efb5 100644 --- a/setup.py +++ b/setup.py @@ -1,14 +1,39 @@ #!/usr/bin/env python from io import open -import os from setuptools import setup, find_packages +import os +import re +import subprocess + + +""" +Use `git tag -a 1.0.0` to tag a release; `python setup.py --version` +to update the _version.py file. +""" 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('-') + if len(parts) == 3: + version = '{}.{}+{}'.format(*parts) + else: + version = parts[0] + 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']