[PATCH 2 of 2] version: add extensions version info (issue4209)
anatoly techtonik
techtonik at gmail.com
Tue Jun 10 06:57:11 CDT 2014
# HG changeset patch
# User anatoly techtonik <techtonik at gmail.com>
# Date 1402401369 -10800
# Tue Jun 10 14:56:09 2014 +0300
# Branch stable
# Node ID 917c6c9356d47f3d3a97ca45967a1f91813c771a
# Parent bd3150aeb5949c8ca2304bf52c6206730b73a8f9
version: add extensions version info (issue4209)
Query extensions for version info and format nicely into columns
diff -r bd3150aeb594 -r 917c6c9356d4 mercurial/commands.py
--- a/mercurial/commands.py Tue Jun 10 13:44:37 2014 +0300
+++ b/mercurial/commands.py Tue Jun 10 14:56:09 2014 +0300
@@ -14,6 +14,7 @@
import patch, help, encoding, templatekw, discovery
import archival, changegroup, cmdutil, hbisect
import sshserver, hgweb, commandserver
+from extensions import extensions
from hgweb import server as hgweb_server
import merge as mergemod
import minirst, revset, fileset
@@ -5908,6 +5909,29 @@
"""
return hg.verify(repo)
+
+def moduleversion(module):
+ """gets version information from the module
+
+ This code was inspired by Django Debug Toolbar's VersionDebugPanel.
+ """
+ extension = module
+ if hasattr(extension, 'get_version'):
+ get_version = extension.get_version
+ if callable(get_version):
+ version = get_version()
+ else:
+ version = get_version
+ elif hasattr(extension, 'VERSION'):
+ version = extension.VERSION
+ elif hasattr(extension, '__version__'):
+ version = extension.__version__
+ else:
+ version = ''
+ if isinstance(version, (list, tuple)):
+ version = '.'.join(str(o) for o in version)
+ return version
+
@command('version', [])
def version_(ui):
"""output version and copyright information"""
@@ -5930,8 +5954,14 @@
# by Markus Zapke-Gruendemann <info at keimlink.de>
ui.note(_("\nEnabled extensions:\n\n"))
if ui.verbose:
- for name, module in ui.configitems('extensions'):
- ui.write(" %s\n" % name)
+ names = []
+ vers = []
+ for name, module in extensions():
+ names.append(name)
+ vers.append(moduleversion(module))
+ maxnamelen = max(len(n) for n in names)
+ for i,n in enumerate(names):
+ ui.write(" %s %s\n" % (n.ljust(maxnamelen), vers[i]))
norepo = ("clone init version help debugcommands debugcomplete"
More information about the Mercurial-devel
mailing list