[PATCH 1 of 2] cmdutil: service: add an optional runargs argument to pass the command to run
Nicolas Dumazet
nicdumz at gmail.com
Sat Aug 15 22:23:32 CDT 2009
# HG changeset patch
# User Nicolas Dumazet <nicdumz.commits at gmail.com>
# Date 1250389824 -32400
# Node ID f9a8cb7a99d7772d33c0a288f3227b1ddff41546
# Parent f7c334e810c2f0996e3f97a7a61787a8c93b79cf
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'
diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -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:
More information about the Mercurial-devel
mailing list