[PATCH v4] version: show enabled extensions (issue4209)

anatoly techtonik techtonik at gmail.com
Fri Jul 4 08:02:56 UTC 2014


# HG changeset patch
# User anatoly techtonik <techtonik at gmail.com>
# Date 1402397077 -10800
#      Tue Jun 10 13:44:37 2014 +0300
# Branch stable
# Node ID 867f0469a179167b2eeb70337beafcf2ae9524d9
# Parent  2392b9e1936628faeec818368169a68b1fadd95f
version: show enabled extensions (issue4209)

This code is based by hg-versions extension (GPLv2)
by Markus Zapke-Gruendemann <info at keimlink.de>


http://mercurial.selenic.com/wiki/VersionsExtension

diff -r 2392b9e19366 -r 867f0469a179 mercurial/commands.py
--- a/mercurial/commands.py	Tue Jul 01 23:32:18 2014 -0500
+++ b/mercurial/commands.py	Tue Jun 10 13:44:37 2014 +0300
@@ -14,6 +14,7 @@
 import patch, help, encoding, templatekw, discovery
 import archival, changegroup, cmdutil, hbisect
 import sshserver, hgweb, commandserver
+import extensions
 from hgweb import server as hgweb_server
 import merge as mergemod
 import minirst, revset, fileset
@@ -5921,6 +5922,19 @@
         "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
     ))
 
+    ui.note(_("\nEnabled extensions:\n\n"))
+    if ui.verbose:
+        # format names and versions into columns
+        names = []
+        vers = []
+        for name, module in extensions.extensions():
+            names.append(name)
+            vers.append(extensions.moduleversion(module))
+        maxnamelen = max(len(n) for n in names)
+        for i, name in enumerate(names):
+            ui.write("  %-*s  %s\n" % (maxnamelen, name, vers[i]))
+
+
 norepo = ("clone init version help debugcommands debugcomplete"
           " debugdate debuginstall debugfsinfo debugpushkey debugwireargs"
           " debugknown debuggetbundle debugbundle")
diff -r 2392b9e19366 -r 867f0469a179 mercurial/extensions.py
--- a/mercurial/extensions.py	Tue Jul 01 23:32:18 2014 -0500
+++ b/mercurial/extensions.py	Tue Jun 10 13:44:37 2014 +0300
@@ -367,3 +367,16 @@
         exts[ename] = doc.splitlines()[0].strip()
 
     return exts
+
+def moduleversion(module):
+    '''return version information from given module as a string'''
+    if (util.safehasattr(module, 'get_version')
+          and callable(module.get_version)):
+        version = module.get_version()
+    elif util.safehasattr(module, '__version__'):
+        version = module.__version__
+    else:
+        version = ''
+    if isinstance(version, (list, tuple)):
+        version = '.'.join(str(o) for o in version)
+    return version


More information about the Mercurial-devel mailing list