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.
This commit is contained in:
Jun Wu 2016-03-09 02:07:40 +00:00
parent cc59112ca7
commit 704e54e1c7
3 changed files with 9 additions and 8 deletions

View File

@ -827,16 +827,17 @@ def service(opts, parentfn=None, initfn=None, runfn=None, logfile=None,
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()

View File

@ -6320,7 +6320,7 @@ def root(ui, repo):
[('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')),

View File

@ -38,7 +38,7 @@ if __name__ == '__main__':
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()