Coverage for src / apcore_cli / display_helpers.py: 100%
14 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-04-26 10:23 +0800
« prev ^ index » next coverage.py v7.13.0, created at 2026-04-26 10:23 +0800
1"""Display overlay helpers — shared resolution logic for CLI surfaces."""
3from __future__ import annotations
5from typing import Any
8def get_display(descriptor: Any) -> dict[str, Any]:
9 """Extract resolved display overlay from a ModuleDescriptor's metadata."""
10 metadata = getattr(descriptor, "metadata", None) or {}
11 if isinstance(metadata, dict):
12 return metadata.get("display") or {}
13 return {}
16def get_cli_display_fields(descriptor: Any) -> tuple[str, str, list[str]]:
17 """Return (display_name, description, tags) resolved from the display overlay.
19 Falls back to scanner-provided values when no overlay is present.
20 """
21 display = get_display(descriptor)
22 cli = display.get("cli") or {}
23 name = (
24 cli.get("alias")
25 or display.get("alias")
26 or (descriptor.canonical_id if hasattr(descriptor, "canonical_id") else descriptor.module_id)
27 )
28 desc = cli.get("description") or descriptor.description
29 tags = display.get("tags") or (descriptor.tags if hasattr(descriptor, "tags") else [])
30 return name, desc, tags