diff hgext/remotenames.py @ 36101:5a53af7d09aa

remotenames: introduce new template keywords for remotenames This patch introduces three new template keywords 'remotenames', 'remotebookmarks', 'remotebranches' to show remotenames, remotebookmarks and remotebranches associated to a changeset. This is a part of moving hgremotenames extension to core. The remotenames template keyword was present in the extension and the rest of the two are not present in the hgremotenames extension and are introduced in this patch. hgremotenames: https://bitbucket.org/seanfarley/hgremotenames Differential Revision: https://phab.mercurial-scm.org/D1759
author Pulkit Goyal <7895pulkit@gmail.com>
date Sat, 23 Dec 2017 15:13:37 +0530
parents 382aefea8faf
children 828f44cdfee3
line wrap: on
line diff
--- a/hgext/remotenames.py	Sat Dec 23 14:24:41 2017 +0530
+++ b/hgext/remotenames.py	Sat Dec 23 15:13:37 2017 +0530
@@ -30,7 +30,9 @@
 from mercurial import (
     logexchange,
     namespaces,
+    pycompat,
     registrar,
+    templatekw,
 )
 
 # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
@@ -41,6 +43,7 @@
 
 configtable = {}
 configitem = registrar.configitem(configtable)
+templatekeyword = registrar.templatekeyword()
 
 configitem('remotenames', 'bookmarks',
     default=True,
@@ -205,3 +208,51 @@
             nodemap = lambda repo, node:
                 repo._remotenames.nodetobranch().get(node, []))
         repo.names.addnamespace(remotebranchns)
+
+@templatekeyword('remotenames')
+def remotenameskw(**args):
+    """:remotenames: List of strings. List of remote names associated with the
+    changeset.
+    """
+    args = pycompat.byteskwargs(args)
+    repo, ctx = args['repo'], args['ctx']
+
+    remotenames = []
+    if 'remotebookmarks' in repo.names:
+        remotenames = repo.names['remotebookmarks'].names(repo, ctx.node())
+
+    if 'remotebranches' in repo.names:
+        remotenames += repo.names['remotebranches'].names(repo, ctx.node())
+
+    return templatekw.showlist('remotename', remotenames, args,
+                               plural='remotenames')
+
+@templatekeyword('remotebookmarks')
+def remotebookmarkskw(**args):
+    """:remotebookmarks: List of strings. List of remote bookmarks associated
+    with the changeset.
+    """
+    args = pycompat.byteskwargs(args)
+    repo, ctx = args['repo'], args['ctx']
+
+    remotebmarks = []
+    if 'remotebookmarks' in repo.names:
+        remotebmarks = repo.names['remotebookmarks'].names(repo, ctx.node())
+
+    return templatekw.showlist('remotebookmark', remotebmarks, args,
+                               plural='remotebookmarks')
+
+@templatekeyword('remotebranches')
+def remotebrancheskw(**args):
+    """:remotebranches: List of strings. List of remote branches associated
+    with the changeset.
+    """
+    args = pycompat.byteskwargs(args)
+    repo, ctx = args['repo'], args['ctx']
+
+    remotebranches = []
+    if 'remotebranches' in repo.names:
+        remotebranches = repo.names['remotebranches'].names(repo, ctx.node())
+
+    return templatekw.showlist('remotebranch', remotebranches, args,
+                               plural='remotebranches')