public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Brian Dolbec" <brian.dolbec@gmail.com>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/catalyst:3.0 commit in: catalyst/, /
Date: Thu, 21 Nov 2013 09:06:33 +0000 (UTC)	[thread overview]
Message-ID: <1385024411.6178a5aa2b6f490abe50155b30904ab422d48da6.dol-sen@gentoo> (raw)

commit:     6178a5aa2b6f490abe50155b30904ab422d48da6
Author:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu Jun  6 15:57:41 2013 +0000
Commit:     Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Thu Nov 21 09:00:11 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/catalyst.git;a=commit;h=6178a5aa

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(-)

diff --git a/catalyst/__init__.py b/catalyst/__init__.py
index c2538aa..c9c2eab 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 03c77e4..d379d35 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 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
@@ -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
+		},
 	)


             reply	other threads:[~2013-11-21  9:06 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-21  9:06 Brian Dolbec [this message]
  -- strict thread matches above, loose matches on Subject: below --
2013-11-21  9:06 [gentoo-commits] proj/catalyst:3.0 commit in: catalyst/, / Brian Dolbec

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1385024411.6178a5aa2b6f490abe50155b30904ab422d48da6.dol-sen@gentoo \
    --to=brian.dolbec@gmail.com \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox