# HG changeset patch # User Denis Laxalde # Date 2019-11-21 15:54:00 # Node ID 79c0121220e3fc6bec26fb6d8c4665d7df8d41c3 # Parent 70060915c3f27aaf730dac991b830d246dbe69a4 phabricator: add a "phabstatus" template keyword We add a "phabstatus" template keyword, returning an object with "url" and "status" keys. This is quite similar to "phabreview" template keyword, but it queries phabricator for each specified revision so it's going to be slow (as compared to the "phabstatus" show view from previous changeset). Differential Revision: https://phab.mercurial-scm.org/D7507 diff --git a/hgext/phabricator.py b/hgext/phabricator.py --- a/hgext/phabricator.py +++ b/hgext/phabricator.py @@ -1684,6 +1684,28 @@ def template_review(context, mapping): return None +@eh.templatekeyword(b'phabstatus', requires={b'ctx', b'repo', b'ui'}) +def template_status(context, mapping): + """:phabstatus: String. Status of Phabricator differential. + """ + ctx = context.resource(mapping, b'ctx') + repo = context.resource(mapping, b'repo') + ui = context.resource(mapping, b'ui') + + rev = ctx.rev() + try: + drevid = getdrevmap(repo, [rev])[rev] + except KeyError: + return None + drevs = callconduit(ui, b'differential.query', {b'ids': [drevid]}) + for drev in drevs: + if int(drev[b'id']) == drevid: + return templateutil.hybriddict( + {b'url': drev[b'uri'], b'status': drev[b'statusName'],} + ) + return None + + @show.showview(b'phabstatus', csettopic=b'work') def phabstatusshowview(ui, repo, displayer): """Phabricator differiential status"""