cmdutil: service: add an optional runargs argument to pass the command to run
authorNicolas Dumazet <nicdumz.commits@gmail.com>
Sun, 16 Aug 2009 11:30:24 +0900
changeset 9513 ae88c721f916
parent 9512 e7bde4680eec
child 9514 7c01599dd340
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'
mercurial/cmdutil.py
--- 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: