feat: accept platform system names in --system

generate_pack and verify read --system beside --platform through common.resolve_system_arg, built on platform_system_names, the mapping the manifest's system_names comes from. verify --platform --system now reports on the narrowed pack. Unknown names are refused with suggestions before the database is read.
This commit is contained in:
Abdessamad Derraz committed 2026-10-21 10:52:40 +02:00
1 parent fd1d1b7b96
commit 3fe88332e7
9 files changed
+424 -117

No files matched your search

+11
View File
@@ -46,8 +46,19 @@ Extract only the files for a single system within a platform:
```bash
python scripts/generate_pack.py --platform retroarch --system sony-playstation
python scripts/generate_pack.py --platform batocera --system psx
python scripts/verify.py --platform batocera --system psx
```
Beside `--platform`, `--system` accepts the platform's own name for a system
as well as our id: `psx` is what Batocera calls `sony-playstation`, and both
build the same pack. The names come from `native_system` in the platform
YAML, the mapping the installer reads as `system_names`, and
`--platform batocera --list-systems` shows them after each id. A comma-separated
value that is itself one name stays one name (Recalbox's `msx1,msx2`). A name
the platform does not know is refused with the closest matches before the
database is read.
### Required only
Exclude optional files from the pack:
+10 -1
View File
@@ -122,6 +122,7 @@ python scripts/verify.py --emulator dolphin # single emulator
python scripts/verify.py --emulator dolphin --standalone # standalone mode only
python scripts/verify.py --emulator handy --strict # exit 1 on a required file missing with no HLE
python scripts/verify.py --system atari-lynx # single system
python scripts/verify.py --platform batocera --system psx # one system of a platform pack
python scripts/verify.py --platform retroarch --target switch # filter by hardware
python scripts/verify.py --platform recalbox --region us # regional priority list
python scripts/verify.py --all --destinations tmp/paths.json # also write the paths each pack holds
@@ -165,6 +166,7 @@ python scripts/generate_pack.py --system atari-lynx
# Granular options
python scripts/generate_pack.py --platform retroarch --system sony-playstation
python scripts/generate_pack.py --platform batocera --system psx
python scripts/generate_pack.py --platform batocera --required-only
python scripts/generate_pack.py --platform retroarch --split
python scripts/generate_pack.py --platform retroarch --split --group-by manufacturer
@@ -215,7 +217,14 @@ own verification mode ([discrepancy detection](verification-modes.md#discrepancy
### Granular options
- `--system` with `--platform`: filter to specific systems within a platform pack
- `--system` with `--platform`: filter to specific systems within a platform pack.
It takes our system ids (`sony-playstation`) and the platform's own names,
read from `native_system` in its YAML (Batocera `psx`, Recalbox `msx1,msx2`).
`--platform <name> --list-systems` prints both. `verify.py --platform --system`
reports on the same narrowed pack, and the installer's `--system` reads the
same mapping from the manifest's `system_names`. An unknown name is refused
with the closest matches before any work. Without `--platform`, `--system`
takes our ids only.
- `--required-only`: exclude optional files and the data directories declared
`required: false`, keep only required
- `--split`: generate one ZIP per system instead of one big pack