Mercurial > hg
view contrib/debugcmdserver.py @ 37090:a61fff493d98
remotenames: show remote bookmarks in `hg bookmarks`
This patch adds functionality to show list of remote bookmarks in `hg bookmarks`
command.
There is some indenting problem in the test output as the current bookmark
printing code in core can handle bookmark names of size 25 only gracefully.
The idea is taken from hgremotenames extension which has --remote and --all
flags to show remote bookmarks. However, this patch by defaults support showing
list of remote bookmarks if remotenames extension is enabled and remotebookmarks
are turned on.
Differential Revision: https://phab.mercurial-scm.org/D2808
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Mon, 12 Mar 2018 18:38:26 +0530 |
parents | cd03fbd5ab57 |
children | 2372284d9457 |
line wrap: on
line source
#!/usr/bin/env python # # Dumps output generated by Mercurial's command server in a formatted style to a # given file or stderr if '-' is specified. Output is also written in its raw # format to stdout. # # $ ./hg serve --cmds pipe | ./contrib/debugcmdserver.py - # o, 52 -> 'capabilities: getencoding runcommand\nencoding: UTF-8' from __future__ import absolute_import, print_function import struct import sys if len(sys.argv) != 2: print('usage: debugcmdserver.py FILE') sys.exit(1) outputfmt = '>cI' outputfmtsize = struct.calcsize(outputfmt) if sys.argv[1] == '-': log = sys.stderr else: log = open(sys.argv[1], 'a') def read(size): data = sys.stdin.read(size) if not data: raise EOFError sys.stdout.write(data) sys.stdout.flush() return data try: while True: header = read(outputfmtsize) channel, length = struct.unpack(outputfmt, header) log.write('%s, %-4d' % (channel, length)) if channel in 'IL': log.write(' -> waiting for input\n') else: data = read(length) log.write(' -> %r\n' % data) log.flush() except EOFError: pass finally: if log != sys.stderr: log.close()