feat: list unsourceable launcher names apart

A launcher name that a reader's profile entry declares unsourceable is
no file left to find. Its row carries the reason and both reports
print it under its own count, never mixed with the names to acquire.
This commit is contained in:
Abdessamad Derraz committed 2026-11-09 17:47:26 +01:00
1 parent b841550bdf
commit 21d34748e5
3 files changed
+65 -8

No files matched your search

+9 -4
View File
@@ -1966,13 +1966,18 @@ def _print_undeclared_section(result: dict, verbose: bool) -> None:
def _print_launcher_reads(result: dict, verbose: bool) -> None:
"""Names the platform's launch code reads that the collection lacks."""
rows = result.get("launcher_reads_not_held") or []
if not rows:
return
every = result.get("launcher_reads_not_held") or []
rows = [r for r in every if not r.get("unsourceable")]
unsourceable = [r for r in every if r.get("unsourceable")]
listed = "" if verbose else " (--verbose lists them)"
print(f" Launcher reads, not held: {len(rows)}{listed}")
if rows:
print(f" Launcher reads, not held: {len(rows)}{listed}")
if unsourceable:
print(f" Launcher reads, unsourceable: {len(unsourceable)}{listed}")
if not verbose:
return
for row in unsourceable:
print(f" {row['name']} [{', '.join(row['emulators'])}]: {row['unsourceable']}")
for row in rows:
kinds = ", ".join(sorted({r["kind"] for r in row["readers"]}))
casing = f", held as {row['held_as']}" if row.get("held_as") else ""