Commit Graph
24 Commits
Author SHA1 Message Date
Abdessamad Derraz 5a4432742c fix: clear an export's old files before writing
An export wrote into its platform directory without removing what an
earlier run left there, so RetroPie scriptmodules and RetroDECK
manifests the current truth no longer corrects stayed beside a
report saying they were untouched. Files the run does not produce
are now removed first.
2026-10-18 04:11:54 +02:00
Abdessamad Derraz 482207264c fix: patch RomM's fixture instead of rebuilding it
The RomM export fetched known_bios_files.json and never read it: the
fixture was rebuilt in our own order, so three corrections came out
as a diff of the whole file and a key we had not transcribed was
deleted. The export now starts from RomM's file, keeps its order and
fields, and only changes the values it corrects.
2026-10-18 04:11:15 +02:00
Abdessamad Derraz b5c4e7340b fix: keep System.dat lines indented with spaces
libretro indents 39 rom lines of System.dat with spaces. The export
read tab-indented lines only, so those left the base and came back
re-rendered at the end of their section, and one our transcription
lacked would have been deleted. Any indentation is read and kept.
2026-10-18 04:10:21 +02:00
Abdessamad Derraz 23d9474f41 fix: serve BizHawk's database as BizHawk wrote it
The export only indexed firmware BizHawk leaves unhashed on purpose,
per-console dumps declared with SHA1Checksum.Dummy, and could only
apply that hash to a same-named call of another system. Every hash
the file states is BizHawk's own, so nothing is rewritten and no
correction is reported.
2026-10-18 04:09:40 +02:00
Abdessamad Derraz 9c0a430f5c fix: settle export sizes, never write None
A truth that accepts several sizes left an export with no size even
where the platform states one of them for the same dump, and RomM's
fixture then received the string None, which RomM cannot parse. A
size list now admits the platform's own size, RomM keeps its value
when nothing settles one, and validation requires a number.
2026-10-18 04:07:57 +02:00
Abdessamad Derraz c047b3828d fix: write a cached original and its URL together
The export cache wrote an original's bytes, then recorded the URL
that produced them under a separate lock, so two runs wanting two
revisions of one file could pair one's bytes with the other's URL.
Both now change under the one index lock.
2026-10-18 03:56:35 +02:00
Abdessamad Derraz 18e61fabcb refactor: read the asset registry with one parser
generate_pack kept a private .gitignore parser whose cache ignored the
root it was asked about, and generate_db a copy of the shared one. Both
now read largefiles.load_registered_paths, cached per root. Test modules
whose main block preceded their last class end with it again.
2026-10-17 19:35:42 +02:00
Abdessamad Derraz 0754d3b64f fix: name each exported addition's core
Batocera, ROCKNIX and Recalbox find a file through the core that wants
it. Additions now carry that core under the platform's own name: the
emulator/core pair checkBios reads (ROCKNIX's from its emulators
package), or Recalbox's core attribute. One with no nameable core, or
filed in a system gated on another core, is counted as not stated.
2026-10-17 19:34:30 +02:00
Abdessamad Derraz e9f9260301 fix: keep one dump per exported hash record 2026-10-17 19:26:46 +02:00
Abdessamad Derraz 27ddd47b20 fix: name one file per search chain for RetroPie 2026-10-17 11:54:56 +02:00
Abdessamad Derraz db179faf82 fix: write no platform size beside a truth hash 2026-10-17 11:53:18 +02:00
Abdessamad Derraz 06bf6d7c09 fix: treat an empty platform system as named 2026-10-16 15:53:24 +02:00
Abdessamad Derraz 21dadfe3bf fix: count bizhawk fills only where written 2026-10-16 15:45:42 +02:00
Abdessamad Derraz ff243c9978 fix: keep each recalbox block and its comments 2026-10-16 15:45:05 +02:00
Abdessamad Derraz 42124618e9 fix: add no file under a system the platform lacks 2026-10-16 15:43:47 +02:00
Abdessamad Derraz ffeee246ff fix: keep retrodeck md5 lists as arrays 2026-10-16 15:42:18 +02:00
Abdessamad Derraz 3a0ae494d3 fix: keep one-value md5 blank when dumps differ 2026-10-16 15:40:44 +02:00
Abdessamad Derraz 0057a82fe1 fix: write recalbox additions at the core path 2026-10-10 10:56:46 +02:00
Abdessamad Derraz c2bdef4db4 fix: pair a bare truth name by name, not suffix 2026-10-10 10:04:35 +02:00
Abdessamad Derraz e4616f7098 fix: never let a romm addition replace their entry 2026-10-06 09:40:09 +02:00
Abdessamad Derraz b81199ff26 feat: keep cached platform originals in step 2026-10-04 16:36:35 +02:00
Abdessamad Derraz 1c4eb8adec fix: correct a platform list without replacing it 2026-09-07 06:40:18 +02:00
Abdessamad Derraz 691ccbfca7 feat: make the native export round-trip a platform file 2026-09-05 17:32:48 +02:00
Abdessamad Derraz b120528dd7 test: cover the native format exporters
export_native turns the profile data back into each platform's own
file, for a maintainer there to pick up and use, and none of the ten
exporters had a test. Coverage goes from 0 to 83%.

Writing them found the EmuDeck exporter rejecting its own output: its
export skips placeholder entries, its validate looked for them anyway
and reported the omission as a missing hash. Both sides apply the same
filter now.

The placeholder assertion initially passed for the wrong reason twice
over -- the fixture entry had no hash, so it was dropped as incomplete
rather than as a placeholder, and the assertion then read the name
while the exporters write the path. It is pinned on an unmistakable
destination now, and removing the guard fails two tests.
2026-08-12 00:46:04 +02:00