mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-04-13 12:22:33 -05:00
docs: document CI workflows, inheritance, MAME clones, tests, scrapers
This commit is contained in:
@@ -1336,6 +1336,49 @@ def generate_wiki_architecture() -> str:
|
||||
"| MAME BIOS ZIPs | `contents` field documents inner structure |",
|
||||
"| RPG Maker/ScummVM | excluded from dedup (NODEDUP) to preserve directory structure |",
|
||||
"| `strip_components` in data dirs | flattens cache prefix to match expected path |",
|
||||
"| case-insensitive dedup | prevents `font.rom` + `FONT.ROM` conflicts on Windows/macOS |",
|
||||
"",
|
||||
"## Platform inheritance",
|
||||
"",
|
||||
"Platform configs support `inherits:` to share definitions.",
|
||||
"Lakka inherits from RetroArch, RetroPie inherits from RetroArch with `base_destination: BIOS`.",
|
||||
"`overrides:` allows child platforms to modify specific systems from the parent.",
|
||||
"",
|
||||
"Core resolution (`resolve_platform_cores`) uses three strategies:",
|
||||
"",
|
||||
"- `cores: all_libretro` - include all profiles with `libretro` in their type",
|
||||
"- `cores: [list]` - include only named profiles",
|
||||
"- `cores:` absent - fallback to system ID intersection between platform and profiles",
|
||||
"",
|
||||
"## MAME clone map",
|
||||
"",
|
||||
"`_mame_clones.json` at repo root maps MAME clone ROM names to their canonical parent.",
|
||||
"When a clone ZIP was deduplicated, `resolve_local_file` uses this map to find the canonical file.",
|
||||
"",
|
||||
"## Tests",
|
||||
"",
|
||||
"`tests/test_e2e.py` contains 75 end-to-end tests with synthetic fixtures.",
|
||||
"Covers: file resolution, verification, severity, cross-reference, aliases,",
|
||||
"inheritance, shared groups, data dirs, storage tiers, HLE, launchers,",
|
||||
"platform grouping, core resolution (3 strategies + alias exclusion).",
|
||||
"",
|
||||
"```bash",
|
||||
"python -m unittest tests.test_e2e -v",
|
||||
"```",
|
||||
"",
|
||||
"## CI workflows",
|
||||
"",
|
||||
"| Workflow | File | Trigger | Role |",
|
||||
"|----------|------|---------|------|",
|
||||
"| Build & Release | `build.yml` | `workflow_dispatch` (manual) | restore large files, build packs, deploy site, create GitHub release |",
|
||||
"| PR Validation | `validate.yml` | pull request on `bios/`/`platforms/` | validate BIOS hashes, schema check, run tests, auto-label PR |",
|
||||
"| Weekly Sync | `watch.yml` | cron (Monday 6 AM UTC) + manual | scrape upstream sources, detect changes, create update PR |",
|
||||
"",
|
||||
"Build workflow has a 7-day rate limit between releases and keeps the 3 most recent.",
|
||||
"",
|
||||
"## License",
|
||||
"",
|
||||
"See `LICENSE` at repo root. Files are provided for personal backup and archival.",
|
||||
"",
|
||||
]
|
||||
return "\n".join(lines) + "\n"
|
||||
@@ -1466,6 +1509,12 @@ def generate_wiki_tools() -> str:
|
||||
"| `retrodeck_scraper` | component manifests | JSON per component |",
|
||||
"| `coreinfo_scraper` | .info files from libretro-core-info | INI-like |",
|
||||
"",
|
||||
"Internal modules: `base_scraper.py` (abstract base with `_fetch_raw()` caching",
|
||||
"and shared CLI), `dat_parser.py` (clrmamepro DAT format parser).",
|
||||
"",
|
||||
"Adding a scraper: inherit `BaseScraper`, implement `fetch_requirements()`,",
|
||||
"call `scraper_cli(YourScraper)` in `__main__`.",
|
||||
"",
|
||||
]
|
||||
return "\n".join(lines) + "\n"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user