Add set_version command to setup.py.
authorBrian Dolbec <dolsen@gentoo.org>
Thu, 6 Jun 2013 15:57:41 +0000 (08:57 -0700)
committerW. Trevor King <wking@tremily.us>
Tue, 11 Jun 2013 21:42:22 +0000 (17:42 -0400)
* Add/modify functions to save and retrieve the set version
  information or the live git version.
* Change indent to tabs.

catalyst/__init__.py
catalyst/version.py
setup.py [changed mode: 0644->0755]

index c2538aacacc96129058378a64eeb159db5582376..c9c2eab383929aad81dfd656ab23ffccb8d66193 100644 (file)
@@ -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)
index 03c77e4023e6277418d5990667e6165af985c5ca..d379d350ab33b46d9b257256336ec8939aa2bbb2 100644 (file)
 '''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))
old mode 100644 (file)
new mode 100755 (executable)
index 34eae53..f585b99
--- a/setup.py
+++ b/setup.py
@@ -1,3 +1,5 @@
+#!/usr/bin/python2 -OO
+
 # Copyright (C) 2013 W. Trevor King <wking@tremily.us>
 #
 # This program is free software: you can redistribute it and/or modify
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-"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
+               },
        )