contrib/hgclient.py
changeset 40589 054d0fcba2c4
parent 40317 6958eb9bdcd6
child 40984 6a372f943e49
equal deleted inserted replaced
40588:9683dfb6f13a 40589:054d0fcba2c4
    25     stdout = sys.stdout
    25     stdout = sys.stdout
    26     stderr = sys.stderr
    26     stderr = sys.stderr
    27     stringio = cStringIO.StringIO
    27     stringio = cStringIO.StringIO
    28     bprint = print
    28     bprint = print
    29 
    29 
    30 def connectpipe(path=None):
    30 def connectpipe(path=None, extraargs=()):
    31     cmdline = [b'hg', b'serve', b'--cmdserver', b'pipe']
    31     cmdline = [b'hg', b'serve', b'--cmdserver', b'pipe']
    32     if path:
    32     if path:
    33         cmdline += [b'-R', path]
    33         cmdline += [b'-R', path]
       
    34     cmdline.extend(extraargs)
    34 
    35 
    35     server = subprocess.Popen(cmdline, stdin=subprocess.PIPE,
    36     server = subprocess.Popen(cmdline, stdin=subprocess.PIPE,
    36                               stdout=subprocess.PIPE)
    37                               stdout=subprocess.PIPE)
    37 
    38 
    38     return server
    39     return server
   112             error.flush()
   113             error.flush()
   113         elif ch == b'I':
   114         elif ch == b'I':
   114             writeblock(server, input.read(data))
   115             writeblock(server, input.read(data))
   115         elif ch == b'L':
   116         elif ch == b'L':
   116             writeblock(server, input.readline(data))
   117             writeblock(server, input.readline(data))
       
   118         elif ch == b'm':
       
   119             bprint(b"message: %r" % data)
   117         elif ch == b'r':
   120         elif ch == b'r':
   118             ret, = struct.unpack('>i', data)
   121             ret, = struct.unpack('>i', data)
   119             if ret != 0:
   122             if ret != 0:
   120                 bprint(b' [%d]' % ret)
   123                 bprint(b' [%d]' % ret)
   121             return ret
   124             return ret
   130     try:
   133     try:
   131         return func(server)
   134         return func(server)
   132     finally:
   135     finally:
   133         server.stdin.close()
   136         server.stdin.close()
   134         server.wait()
   137         server.wait()
       
   138 
       
   139 def checkwith(connect=connectpipe, **kwargs):
       
   140     def wrap(func):
       
   141         return check(func, lambda: connect(**kwargs))
       
   142     return wrap