better argument treatment
This commit is contained in:
25
base.py
25
base.py
@ -251,7 +251,7 @@ class ServiceManager:
|
||||
if not self.stop(ins, service):
|
||||
print('nothing to stop')
|
||||
|
||||
def prepare_start(self, ins, service):
|
||||
def prepare_start(self, ins, service, cfg=''):
|
||||
if ins not in self.env:
|
||||
self.get_info()
|
||||
gr = self.group.upper()
|
||||
@ -300,12 +300,15 @@ class ServiceManager:
|
||||
if not cmd:
|
||||
if restart and service is None:
|
||||
continue # silently ignore missing cfg when restarting all services
|
||||
raise ValueError('missing cfg for %s %s' % (ins, service_i))
|
||||
raise UsageError('missing cfg for %s %s' % (ins, service_i))
|
||||
wd = os.getcwd()
|
||||
try:
|
||||
start_dir, env = self.prepare_start(ins, service_i)
|
||||
start_dir, env = self.prepare_start(ins, service_i, cfg)
|
||||
env = dict(os.environ, **env)
|
||||
os.chdir(start_dir)
|
||||
if start_dir not in sys.path:
|
||||
sys.path.insert(0, start_dir)
|
||||
print('SYSPATH', sys.path)
|
||||
if wait:
|
||||
proc = subprocess.Popen(cmd.split(), env=env)
|
||||
proc.wait()
|
||||
@ -353,7 +356,10 @@ class ServiceManager:
|
||||
def do_run(self, ins, service=None, cfg=None):
|
||||
"""for tests: run and wait"""
|
||||
if not service:
|
||||
service, = self.services
|
||||
try:
|
||||
service, = self.services
|
||||
except ValueError:
|
||||
raise UsageError('need service to start (one of %s)' % ', '.join(self.services))
|
||||
self.do_start(ins, service, cfg, wait=True)
|
||||
|
||||
def do_list(self, ins=None, *args):
|
||||
@ -417,10 +423,19 @@ class ServiceManager:
|
||||
raise UsageError(errtxt)
|
||||
raise
|
||||
|
||||
def usage(self):
|
||||
def do_help(self, *args):
|
||||
if self.main_ins:
|
||||
usage = self.USAGE.replace(' <instance>', '').replace(' [<instance>]', '') % ''
|
||||
else:
|
||||
usage = self.USAGE % ('<instance> is one of %s' % ', '.join(self.info))
|
||||
print(usage)
|
||||
|
||||
def treat_args(self, argdict, unknown=(), extra=()):
|
||||
if unknown:
|
||||
raise UsageError('unknown argument: %s' % (' '.join(unknown)))
|
||||
if extra:
|
||||
return [argdict.get('ins'), argdict.get('service')] + extra
|
||||
args = [argdict.get('ins'), argdict.get('service')]
|
||||
while args and not args[-1]:
|
||||
args.pop()
|
||||
return args
|
||||
|
Reference in New Issue
Block a user