fix: make maintainer tool output actionable

--emulator accepts a buildbot core name from a profile's cores:, and a
mistyped target gets the closest names instead of every target. diff_truth
shows destinations and reports unpaired entries as evidence, not removals.
The verify summary counts discrepancies, a shared destination names both
systems, a truth hash conflict names both cores, and pipeline steps carry
their place in the real run instead of N/8. Every GitHub API caller takes
the token from github_token(), which falls back to gh auth token.
This commit is contained in:
Abdessamad Derraz committed 2026-10-21 04:42:01 +02:00
1 parent 6ee138a819
commit 7095aa61e7
29 files changed
+764 -154

No files matched your search

+10 -9
View File
@@ -855,16 +855,17 @@ def main() -> None:
require_platform(args.platform, args.platforms_dir)
profiles = load_emulator_profiles(args.emulators_dir)
if args.emulator:
emulator = args.emulator
if emulator:
# A typo answered "No emulator profiles found" with exit 0.
try:
select_emulator_profiles(
((emulator, _),) = select_emulator_profiles(
[args.emulator],
load_emulator_profiles(args.emulators_dir, skip_aliases=False),
)
except ProfileSelectionError as exc:
raise SystemExit(f"ERROR: {exc}") from None
profiles = {k: v for k, v in profiles.items() if k == args.emulator}
profiles = {k: v for k, v in profiles.items() if k == emulator}
if args.target and not args.platform:
parser.error("--target requires --platform")
@@ -897,14 +898,14 @@ def main() -> None:
))
if not profiles:
if args.emulator and args.target and set(args.emulator.split(",")) & run_anywhere:
if emulator and args.target and emulator in run_anywhere:
raise SystemExit(
f"ERROR: {args.emulator} is not built for {args.platform}'s "
f"ERROR: {emulator} is not built for {args.platform}'s "
f"{args.target} target; {args.platform} runs it elsewhere "
f"(drop --target to see its files)"
)
if args.emulator:
raise SystemExit(f"ERROR: {args.emulator} is not run by {args.platform}")
if emulator:
raise SystemExit(f"ERROR: {emulator} is not run by {args.platform}")
print(f"{args.platform or 'The tree'} runs no profiled emulator.", file=sys.stderr)
return
@@ -921,8 +922,8 @@ def main() -> None:
if args.json:
print(json.dumps(report, indent=2))
else:
if args.emulator:
scope = args.emulator
if emulator:
scope = emulator
elif args.platform:
scope = f"the emulators {args.platform} runs"
else: