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.
--- 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()