diff --git a/frappyman.py b/frappyman.py index 3922521..2890352 100644 --- a/frappyman.py +++ b/frappyman.py @@ -460,34 +460,34 @@ class FrappyManager(ServiceManager): for service in self.services: self.all_cfg(ins, service, list_info, sea_info) seacfgpat = re.compile(r'(.*)(\.config|\.stick|\.addon)') - sea_ambig = {} # collect info about ambiguous sea info - for cfg, seacfg in sea_info.items(): - sea_ambig.setdefault(seacfg, set()).add(cfg) + inverted_sea_info = {} + for seacfg, cfgset in sea_info.items(): + for cfg in cfgset: + inverted_sea_info[cfg] = seacfg ambiguous = 0 keylen = max(max(len(k) for k in cfgs) for cfgs in list_info.values()) for cfgdir, cfgs in list_info.items(): if cfgs: prt('') prt('--- %s:' % cfgdir) - for cfg, desc in cfgs.items(): - seacfg = sea_info.get(cfg) + for cfg, desc in sorted(cfgs.items(), key=lambda v: (v[0].lower(), v)): + seacfg = inverted_sea_info.get(cfg) if seacfg: name, ext = seacfgpat.match(seacfg).groups() if name == cfg or name + 'stick' == cfg: prefix = '* ' else: prefix = f'* ({name}{ext}) ' - n = len(sea_ambig.get(seacfg)) - if n > 1: - prefix = '!' + prefix[1:] - ambiguous += 1 + if len(sea_info[seacfg]) > 1: + prefix = '!' + prefix + ambiguous += 1 / len(sea_info[seacfg]) desc = prefix + desc prt('%s %s' % (cfg.ljust(keylen), desc)) prt(' ') gap = ' ' * keylen prt(f'{gap} * need sea') 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=()): if len(unknown) == 1: