Mercurial > hg
changeset 9513:ae88c721f916
cmdutil: service: add an optional runargs argument to pass the command to run
This would be necessary for inotify launching its server: the initial command
is a standard 'hg st'/'hg ci'/... but the daemon to run is 'hg inserve'
author | Nicolas Dumazet <nicdumz.commits@gmail.com> |
---|---|
date | Sun, 16 Aug 2009 11:30:24 +0900 |
parents | e7bde4680eec |
children | 7c01599dd340 |
files | mercurial/cmdutil.py |
diffstat | 1 files changed, 11 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/cmdutil.py Thu Sep 17 21:12:32 2009 +0200 +++ b/mercurial/cmdutil.py Sun Aug 16 11:30:24 2009 +0900 @@ -546,24 +546,26 @@ return errors -def service(opts, parentfn=None, initfn=None, runfn=None, logfile=None): +def service(opts, parentfn=None, initfn=None, runfn=None, logfile=None, + runargs=None): '''Run a command as a service.''' if opts['daemon'] and not opts['daemon_pipefds']: rfd, wfd = os.pipe() - args = sys.argv[:] - args.append('--daemon-pipefds=%d,%d' % (rfd, wfd)) + if not runargs: + runargs = sys.argv[:] + runargs.append('--daemon-pipefds=%d,%d' % (rfd, wfd)) # Don't pass --cwd to the child process, because we've already # changed directory. - for i in xrange(1,len(args)): - if args[i].startswith('--cwd='): - del args[i] + for i in xrange(1,len(runargs)): + if runargs[i].startswith('--cwd='): + del runargs[i] break - elif args[i].startswith('--cwd'): - del args[i:i+2] + elif runargs[i].startswith('--cwd'): + del runargs[i:i+2] break pid = os.spawnvp(os.P_NOWAIT | getattr(os, 'P_DETACH', 0), - args[0], args) + runargs[0], runargs) os.close(wfd) os.read(rfd, 1) if parentfn: