aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Dolbec <dolsen@gentoo.org>2013-06-06 08:57:41 -0700
committerBrian Dolbec <dolsen@gentoo.org>2013-11-21 22:02:35 -0800
commit1ff4b0d5ad73bcd43c7939b1001aea5597330e8f (patch)
tree3d438174a56db881d43cd5b530446a85e7d9da42
parentsetup.py: Add disutils-based packaging (diff)
downloadcatalyst-1ff4b0d5ad73bcd43c7939b1001aea5597330e8f.tar.gz
catalyst-1ff4b0d5ad73bcd43c7939b1001aea5597330e8f.tar.bz2
catalyst-1ff4b0d5ad73bcd43c7939b1001aea5597330e8f.zip
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.
-rw-r--r--catalyst/__init__.py7
-rw-r--r--catalyst/version.py44
-rwxr-xr-x[-rw-r--r--]setup.py38
3 files changed, 83 insertions, 6 deletions
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
index 34eae53a..f585b999 100644..100755
--- 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
@@ -13,14 +15,19 @@
# 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
+ },
)