diff --git a/setup.py b/setup.py index a3a0b35..e0e03a6 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,5 @@ from setuptools import setup, find_packages - -from ufpy import __version__ +import re with open('README.md', 'r', encoding='utf-8') as mdf: long_description = mdf.read() @@ -15,6 +14,33 @@ project_name = 'ufpy' github_url = f'https://github.com/{organization_name}/{project_name}' +def derive_version() -> str: # this function is stolen from discord.py + version = '' + with open('ufpy/__init__.py') as f: + version = re.search(r'^__version__\s*=\s*[\'"]([^\'"]*)[\'"]', f.read(), re.MULTILINE).group(1) + + if not version: + raise RuntimeError('version is not set') + + if version.endswith(('a', 'b', 'rc')): + # append version identifier based on commit count + try: + import subprocess + + p = subprocess.Popen(['git', 'rev-list', '--count', 'HEAD'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + out, err = p.communicate() + if out: + version += out.decode('utf-8').strip() + p = subprocess.Popen(['git', 'rev-parse', '--short', 'HEAD'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + out, err = p.communicate() + if out: + version += '+g' + out.decode('utf-8').strip() + except Exception: + pass + + return version + +__version__ = derive_version() setup( name=project_name,