changeset 28451:c90cfe76e024

serve: accept multiple values for --daemon-postexec The next patch will add another postexec command: chdir, which can be used together with unlink. This patch changes the option type of --daemon-postexec from string to list to accept multiple commands. The error message of invalid --daemon-postexec value is also changed to include the actual invalid value.
author Jun Wu <quark@fb.com>
date Wed, 09 Mar 2016 02:07:40 +0000
parents 155e3308289c
children 0bb01c8754bf
files mercurial/cmdutil.py mercurial/commands.py tests/dumbhttp.py
diffstat 3 files changed, 9 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/cmdutil.py	Sat Feb 27 12:56:26 2016 +0100
+++ b/mercurial/cmdutil.py	Wed Mar 09 02:07:40 2016 +0000
@@ -827,16 +827,17 @@
         writepid(util.getpid())
 
     if opts['daemon_postexec']:
-        inst = opts['daemon_postexec']
         try:
             os.setsid()
         except AttributeError:
             pass
-        if inst.startswith('unlink:'):
-            lockpath = inst[7:]
-            os.unlink(lockpath)
-        elif inst != 'none':
-            raise error.Abort(_('invalid value for --daemon-postexec'))
+        for inst in opts['daemon_postexec']:
+            if inst.startswith('unlink:'):
+                lockpath = inst[7:]
+                os.unlink(lockpath)
+            elif inst != 'none':
+                raise error.Abort(_('invalid value for --daemon-postexec: %s')
+                                  % inst)
         util.hidewindow()
         sys.stdout.flush()
         sys.stderr.flush()
--- a/mercurial/commands.py	Sat Feb 27 12:56:26 2016 +0100
+++ b/mercurial/commands.py	Wed Mar 09 02:07:40 2016 +0000
@@ -6320,7 +6320,7 @@
     [('A', 'accesslog', '', _('name of access log file to write to'),
      _('FILE')),
     ('d', 'daemon', None, _('run server in background')),
-    ('', 'daemon-postexec', '', _('used internally by daemon mode')),
+    ('', 'daemon-postexec', [], _('used internally by daemon mode')),
     ('E', 'errorlog', '', _('name of error log file to write to'), _('FILE')),
     # use string type, then we can check if something was passed
     ('p', 'port', '', _('port to listen on (default: 8000)'), _('PORT')),
--- a/tests/dumbhttp.py	Sat Feb 27 12:56:26 2016 +0100
+++ b/tests/dumbhttp.py	Wed Mar 09 02:07:40 2016 +0000
@@ -38,7 +38,7 @@
     parser.add_option('-f', '--foreground', dest='foreground',
         action='store_true',
         help='do not start the HTTP server in the background')
-    parser.add_option('--daemon-postexec')
+    parser.add_option('--daemon-postexec', action='append')
 
     (options, args) = parser.parse_args()