From 77d228a10b4d966a9e81e8c4d952f590881cb71d Mon Sep 17 00:00:00 2001 From: Markus Holtermann Date: Fri, 14 Jun 2013 13:15:17 +0200 Subject: Push to 0.1b1 --- bvggrabber/__init__.py | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++ setup.py | 4 +++- 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/bvggrabber/__init__.py b/bvggrabber/__init__.py index 40a96af..775dd6b 100644 --- a/bvggrabber/__init__.py +++ b/bvggrabber/__init__.py @@ -1 +1,53 @@ # -*- coding: utf-8 -*- +import datetime +import os +import subprocess + + +VERSION = (0, 1, 0, 'beta', 1) + + +def get_version(): + "Returns a PEP 386-compliant version number from VERSION." + # Taken from django.utils.version + assert VERSION[3] in ('alpha', 'beta', 'rc', 'final') + + # Now build the two parts of the version number: + # main = X.Y[.Z] + # sub = .devN - for pre-alpha releases + # | {a|b|c}N - for alpha, beta and rc releases + + parts = 2 if VERSION[2] == 0 else 3 + main = '.'.join(str(x) for x in VERSION[:parts]) + + sub = '' + if VERSION[3] == 'alpha' and VERSION[4] == 0: + git_changeset = get_git_changeset() + if git_changeset: + sub = '.dev%s' % git_changeset + + elif VERSION[3] != 'final': + mapping = {'alpha': 'a', 'beta': 'b', 'rc': 'c'} + sub = mapping[VERSION[3]] + str(VERSION[4]) + + return str(main + sub) + + +def get_git_changeset(): + """Returns a numeric identifier of the latest git changeset. + + The result is the UTC timestamp of the changeset in YYYYMMDDHHMMSS format. + This value isn't guaranteed to be unique, but collisions are very unlikely, + so it's sufficient for generating the development version numbers. + """ + repo_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + git_log = subprocess.Popen('git log --pretty=format:%ct --quiet -1 HEAD', + stdout=subprocess.PIPE, stderr=subprocess.PIPE, + shell=True, cwd=repo_dir, universal_newlines=True) + timestamp = git_log.communicate()[0] + try: + timestamp = datetime.datetime.utcfromtimestamp(int(timestamp)) + except ValueError: + return None + return timestamp.strftime('%Y%m%d%H%M%S') + diff --git a/setup.py b/setup.py index 4a604df..21ded8d 100755 --- a/setup.py +++ b/setup.py @@ -4,6 +4,8 @@ import codecs from os import path from setuptools import setup, find_packages +from bvggrabber import get_version + BASEDIR = path.dirname(__file__) open = lambda filepath: codecs.open(filepath, 'r', 'utf-8') @@ -15,7 +17,7 @@ setup( name='bvg-grabber', description='Querying the upcoming public transport departures in Berlin', long_description=description, - version='0.1a1', + version=get_version(), url='https://github.com/Markush2010/bvg-grabber', author='Christian Struck, Markus Holtermann', author_email='', -- cgit v1.2.3