From cd013a4b63bcc2d7f407d512e528eaac8c2e158f Mon Sep 17 00:00:00 2001 From: Brian Dolbec Date: Thu, 6 Jun 2013 08:57:41 -0700 Subject: [PATCH] Add set_version command to setup.py. * Add/modify functions to save and retrieve the set version information or the live git version. * Change indent to tabs. --- catalyst/__init__.py | 7 ++++++- catalyst/version.py | 44 +++++++++++++++++++++++++++++++++++++++++--- setup.py | 38 ++++++++++++++++++++++++++++++++++++-- 3 files changed, 83 insertions(+), 6 deletions(-) mode change 100644 => 100755 setup.py diff --git a/catalyst/__init__.py b/catalyst/__init__.py index c2538aac..c9c2eab3 100644 --- a/catalyst/__init__.py +++ b/catalyst/__init__.py @@ -1,3 +1,8 @@ "Catalyst is a release building tool used by Gentoo Linux" -from .version import __version__ +try: + from .verinfo import version as fullversion + __version__ = fullversion.split('\n')[0].split()[1] +except ImportError: + from .version import get_version, __version__ + fullversion = get_version(reset=True) diff --git a/catalyst/version.py b/catalyst/version.py index 03c77e40..d379d350 100644 --- a/catalyst/version.py +++ b/catalyst/version.py @@ -10,14 +10,52 @@ '''Version information and/or git version information ''' +import os + from snakeoil.version import format_version __version__="rewrite-git" _ver = None -def get_version(): + +def get_git_version(version=__version__): """Return: a string describing our version.""" global _ver - if _ver is None: - _ver = format_version('catalyst',__file__, __version__) + _ver = format_version('catalyst',__file__, version) return _ver + + +def get_version(reset=False): + '''Returns a saved release version string or the + generated git release version. + ''' + global __version__, _ver + if _ver and not reset: + return _ver + try: # getting the fixed version + from .verinfo import version + _ver = version + __version__ = version.split('\n')[0].split()[1] + except ImportError: # get the live version + version = get_git_version() + return version + + + +def set_release_version(version, root=None): + '''Saves the release version along with the + git log release information + + @param version: string + @param root: string, optional alternate root path to save to + ''' + #global __version__ + filename = "verinfo.py" + if not root: + path = os.path.join(os.path.dirname(__file__), filename) + else: + path = os.path.join(root, filename) + #__version__ = version + ver = get_git_version(version) + with open(path, 'w') as f: + f.write("version = {0!r}".format(ver)) diff --git a/setup.py b/setup.py old mode 100644 new mode 100755 index 34eae53a..f585b999 --- a/setup.py +++ b/setup.py @@ -1,3 +1,5 @@ +#!/usr/bin/python2 -OO + # Copyright (C) 2013 W. Trevor King # # This program is free software: you can redistribute it and/or modify @@ -13,14 +15,19 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -"Catalyst is a release building tool used by Gentoo Linux" +"""Catalyst is a release building tool used by Gentoo Linux""" + +# py2.6 compatibility +from __future__ import print_function import codecs as _codecs -from distutils.core import setup as _setup +from distutils.core import setup as _setup, Command as _Command import itertools as _itertools import os as _os from catalyst import __version__ +from catalyst.version import set_release_version as _set_release_version +from catalyst.version import get_version as _get_version _this_dir = _os.path.dirname(__file__) @@ -44,6 +51,30 @@ def files(root): yield path +class set_version(_Command): + '''Saves the specified release version information + ''' + global __version__ + description = "hardcode script's version using VERSION from environment" + user_options = [] # [(long_name, short_name, desc),] + + def initialize_options (self): + pass + + def finalize_options (self): + pass + + def run(self): + try: + version = _os.environ['VERSION'] + except KeyError: + print("Try setting 'VERSION=x.y.z' on the command line... Aborting") + return + _set_release_version(version) + __version__ = _get_version() + print("Version set to:\n", __version__) + + _setup( name=package_name, version=__version__, @@ -86,4 +117,7 @@ _setup( ))), ], provides=[package_name], + cmdclass={ + 'set_version': set_version + }, ) -- 2.26.2