fix handling of addons, 2nd attempt

This commit is contained in:
zolliker 2024-05-13 14:55:27 +02:00
parent 02b24ed202
commit bb9eac432e

View File

@ -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)