fix handling of addons, 2nd attempt
This commit is contained in:
parent
02b24ed202
commit
bb9eac432e
17
frappyman.py
17
frappyman.py
@ -378,15 +378,15 @@ class FrappyManager(ServiceManager):
|
|||||||
self.state[f'sea {service}'] = seacfg
|
self.state[f'sea {service}'] = seacfg
|
||||||
|
|
||||||
running_addons = self.frappy_cfgs.get('addons')
|
running_addons = self.frappy_cfgs.get('addons')
|
||||||
running_addons = set(','.split(running_addons)) if running_addons else ()
|
running_addons = [v.strip() for v in running_addons.split(',') if v.strip()]
|
||||||
proposed_addons = set()
|
proposed_addons = [] # use list instead of set for keeping order
|
||||||
running_sea_addons = set()
|
running_sea_addons = set()
|
||||||
for cfg in running_addons:
|
for cfg in running_addons:
|
||||||
seacfg = self.frappy2sea.get(cfg.strip())
|
seacfg = self.frappy2sea.get(cfg.strip())
|
||||||
if seacfg is None:
|
if seacfg is None:
|
||||||
proposed_addons.add(cfg) # addons with no sea cfg should be kept
|
proposed_addons.append(cfg) # addons with no sea cfg should be kept
|
||||||
elif seacfg.endswith('.addon') and seacfg[:-6] in sealist[2:]:
|
elif seacfg.endswith('.addon') and seacfg[:-6] in sealist[2:]:
|
||||||
proposed_addons.add(cfg)
|
proposed_addons.append(cfg)
|
||||||
running_sea_addons.add(seacfg)
|
running_sea_addons.add(seacfg)
|
||||||
|
|
||||||
for scfg in sealist[2:]:
|
for scfg in sealist[2:]:
|
||||||
@ -397,9 +397,12 @@ class FrappyManager(ServiceManager):
|
|||||||
if len(proposed) > 1:
|
if len(proposed) > 1:
|
||||||
self.error = f'ambiguous frappy cfg for {seacfg}.addon: {proposed}'
|
self.error = f'ambiguous frappy cfg for {seacfg}.addon: {proposed}'
|
||||||
else:
|
else:
|
||||||
proposed_addons |= proposed
|
proposed = list(proposed)[0]
|
||||||
if proposed_addons and set(proposed_addons) != set(running_addons):
|
if proposed not in proposed_addons:
|
||||||
proposed_cfg['addons'] = {','.join(sorted(proposed_addons))}
|
proposed_addons.append(proposed)
|
||||||
|
self.sea_cfgs['addons'] = ','.join(sealist[2:])
|
||||||
|
if proposed_addons: # and set(proposed_addons) != set(running_addons):
|
||||||
|
proposed_cfg['addons'] = {','.join(proposed_addons)}
|
||||||
|
|
||||||
for service in FrappyManager.services:
|
for service in FrappyManager.services:
|
||||||
given = givencfgs.get(service)
|
given = givencfgs.get(service)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user