contrib/hgclient.py
changeset 28836 3f45488d70df
parent 28355 897a4bbd578b
child 40314 73c2b9c9cd3c
equal deleted inserted replaced
28835:68a946e83188 28836:3f45488d70df
     1 # A minimal client for Mercurial's command server
     1 # A minimal client for Mercurial's command server
     2 
     2 
     3 from __future__ import absolute_import, print_function
     3 from __future__ import absolute_import, print_function
     4 import cStringIO
       
     5 import os
     4 import os
     6 import signal
     5 import signal
     7 import socket
     6 import socket
     8 import struct
     7 import struct
     9 import subprocess
     8 import subprocess
    10 import sys
     9 import sys
    11 import time
    10 import time
       
    11 
       
    12 try:
       
    13     import cStringIO as io
       
    14     stringio = io.StringIO
       
    15 except ImportError:
       
    16     import io
       
    17     stringio = io.StringIO
    12 
    18 
    13 def connectpipe(path=None):
    19 def connectpipe(path=None):
    14     cmdline = ['hg', 'serve', '--cmdserver', 'pipe']
    20     cmdline = ['hg', 'serve', '--cmdserver', 'pipe']
    15     if path:
    21     if path:
    16         cmdline += ['-R', path]
    22         cmdline += ['-R', path]
    81     sys.stdout.flush()
    87     sys.stdout.flush()
    82     server.stdin.write('runcommand\n')
    88     server.stdin.write('runcommand\n')
    83     writeblock(server, '\0'.join(args))
    89     writeblock(server, '\0'.join(args))
    84 
    90 
    85     if not input:
    91     if not input:
    86         input = cStringIO.StringIO()
    92         input = stringio()
    87 
    93 
    88     while True:
    94     while True:
    89         ch, data = readchannel(server)
    95         ch, data = readchannel(server)
    90         if ch == 'o':
    96         if ch == 'o':
    91             output.write(outfilter(data))
    97             output.write(outfilter(data))