frappyman: fix make_proposed

This commit is contained in:
l_samenv 2023-10-26 10:18:51 +02:00
parent 085e493942
commit dc24f3585c

View File

@ -460,34 +460,34 @@ class FrappyManager(ServiceManager):
for service in self.services: for service in self.services:
self.all_cfg(ins, service, list_info, sea_info) self.all_cfg(ins, service, list_info, sea_info)
seacfgpat = re.compile(r'(.*)(\.config|\.stick|\.addon)') seacfgpat = re.compile(r'(.*)(\.config|\.stick|\.addon)')
sea_ambig = {} # collect info about ambiguous sea info inverted_sea_info = {}
for cfg, seacfg in sea_info.items(): for seacfg, cfgset in sea_info.items():
sea_ambig.setdefault(seacfg, set()).add(cfg) for cfg in cfgset:
inverted_sea_info[cfg] = seacfg
ambiguous = 0 ambiguous = 0
keylen = max(max(len(k) for k in cfgs) for cfgs in list_info.values()) keylen = max(max(len(k) for k in cfgs) for cfgs in list_info.values())
for cfgdir, cfgs in list_info.items(): for cfgdir, cfgs in list_info.items():
if cfgs: if cfgs:
prt('') prt('')
prt('--- %s:' % cfgdir) prt('--- %s:' % cfgdir)
for cfg, desc in cfgs.items(): for cfg, desc in sorted(cfgs.items(), key=lambda v: (v[0].lower(), v)):
seacfg = sea_info.get(cfg) seacfg = inverted_sea_info.get(cfg)
if seacfg: if seacfg:
name, ext = seacfgpat.match(seacfg).groups() name, ext = seacfgpat.match(seacfg).groups()
if name == cfg or name + 'stick' == cfg: if name == cfg or name + 'stick' == cfg:
prefix = '* ' prefix = '* '
else: else:
prefix = f'* ({name}{ext}) ' prefix = f'* ({name}{ext}) '
n = len(sea_ambig.get(seacfg)) if len(sea_info[seacfg]) > 1:
if n > 1: prefix = '!' + prefix
prefix = '!' + prefix[1:] ambiguous += 1 / len(sea_info[seacfg])
ambiguous += 1
desc = prefix + desc desc = prefix + desc
prt('%s %s' % (cfg.ljust(keylen), desc)) prt('%s %s' % (cfg.ljust(keylen), desc))
prt(' ') prt(' ')
gap = ' ' * keylen gap = ' ' * keylen
prt(f'{gap} * need sea') prt(f'{gap} * need sea')
if ambiguous: if ambiguous:
print(f'{gap} ! {ambiguous} ambiguous mappings sea -> frappy') print(f'{gap} ! {round(ambiguous)} ambiguous mappings sea -> frappy')
def treat_args(self, argdict, unknown=(), extra=()): def treat_args(self, argdict, unknown=(), extra=()):
if len(unknown) == 1: if len(unknown) == 1: