Added libbe.version, wrapping the auto-generated libbe._version.
authorW. Trevor King <wking@drexel.edu>
Tue, 15 Sep 2009 13:32:40 +0000 (09:32 -0400)
committerW. Trevor King <wking@drexel.edu>
Tue, 15 Sep 2009 13:32:40 +0000 (09:32 -0400)
Two major benefits:

1) Programatic access to the BE version.  Previously the
version-string logic was internal to the commandline interface ./be,
which left the other interfaces hanging.

2) Simple to override auto-generated revision id version with any
string you like (by setting libbe.version._VERSION, if that's the way
you want to run things or the way your packaging system requires.

Note that other modules should never read libbe.version._VERSION,
since it may not be defined.  Instead they should use the output of
libbe.version.version().

be
libbe/version.py [new file with mode: 0644]

diff --git a/be b/be
index 36deabab5c5025356e8e69febbdc2fea70145170..1f7e4a3d8e62e3dc11adc248877d3c4ce8bf1bd4 100755 (executable)
--- a/be
+++ b/be
@@ -21,7 +21,7 @@
 import os
 import sys
 
-from libbe import cmdutil, _version
+from libbe import cmdutil, version
 
 __doc__ = cmdutil.help()
 
@@ -51,7 +51,7 @@ except cmdutil.GetCompletions, e:
     sys.exit(0)
 
 if options.version == True:
-    print _version.version_info["revision_id"]
+    print version.version()
     sys.exit(0)
 if options.dir != None:
     os.chdir(options.dir)
diff --git a/libbe/version.py b/libbe/version.py
new file mode 100644 (file)
index 0000000..f8eebbd
--- /dev/null
@@ -0,0 +1,50 @@
+#!/usr/bin/env python
+# Copyright (C) 2009 W. Trevor King <wking@drexel.edu>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+"""
+Store version info for this BE installation.  By default, use the
+bzr-generated information in _version.py, but allow manual overriding
+by setting _VERSION.  This allows support of both the "I don't want to
+be bothered setting version strings" and the "I want complete control
+over the version strings" workflows.
+"""
+
+import libbe._version as _version
+
+# Manually set a version string (optional, defaults to bzr revision id)
+#_VERSION = "1.2.3"
+
+def version(verbose=False):
+    """
+    Returns the version string for this BE installation.  If
+    verbose==True, the string will include extra lines with more
+    detail (e.g. bzr branch nickname, etc.).
+    """
+    if "_VERSION" in globals():
+        string = _VERSION
+    else:
+        string = _version.version_info["revision_id"]
+    if verbose == True:
+        string += ("\n"
+                   "revision: %(revno)d\n"
+                   "nick: %(branch_nick)s\n"
+                   "revision id: %(revision_id)s"
+                   % _version.version_info)
+    return string
+
+if __name__ == "__main__":
+    print version(verbose=True)