docs: say what the pack installers really do

The EmuDeck pack README promised standalone keys set up
automatically, which needs --standalone-copies, and named a Citra
folder the installer never uses. The RetroArch README gave Windows
users a shell command only, and RetroPie's sent a PC to a Linux
partition it cannot open. Each guide now matches the installer.
This commit is contained in:
Abdessamad Derraz committed 2026-10-18 05:28:31 +02:00
1 parent 8d0b6d5f93
commit cc7f9fbdac
2 files changed
+64 -16

No files matched your search

+22 -16
View File
@@ -36,8 +36,10 @@ def _build_readme(
"INSTALLATION GUIDE\n\n"
" Option A: Automatic (recommended)\n"
" ---------------------------------\n"
" Run this in a terminal:\n\n"
" Linux, macOS, Steam Deck: run this in a terminal:\n\n"
" curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh\n\n"
" Windows: run this in PowerShell:\n\n"
" irm https://raw.githubusercontent.com/Abdess/retrobios/main/install.ps1 | iex\n\n"
" The script auto-detects your RetroArch install and copies\n"
" files to the correct location.\n\n"
" Option B: Manual (PC)\n"
@@ -104,20 +106,21 @@ def _build_readme(
" ---------------------------------\n"
" Open Konsole (or any terminal) and run:\n\n"
" curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh\n\n"
" The script places BIOS files AND sets up standalone\n"
" emulator keys automatically.\n\n"
" The script places the BIOS files. To also copy the keys\n"
" into the standalone emulators it finds, run:\n\n"
" curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh -s -- --standalone-copies\n\n"
" Option B: Manual\n"
" ----------------\n"
" 1. Open Dolphin file manager\n"
" 2. Navigate to ~/Emulation/bios/\n"
" 3. Extract all files from this archive directly into ~/Emulation/bios/\n\n"
" STANDALONE EMULATORS (extra step)\n"
" Switch and 3DS emulators need keys in specific folders:\n"
" prod.keys -> ~/.local/share/yuzu/keys/\n"
" prod.keys -> ~/.local/share/eden/keys/\n"
" prod.keys -> ~/.config/Ryujinx/system/\n"
" aes_keys.txt -> ~/Emulation/bios/citra/keys/\n"
" The automatic installer handles this for you.\n\n"
" Switch and 3DS emulators need keys in their own folders:\n"
" prod.keys -> ~/.local/share/yuzu/keys/\n"
" prod.keys -> ~/.local/share/eden/keys/\n"
" prod.keys -> ~/.config/Ryujinx/system/\n"
" aes_keys.txt -> ~/.local/share/azahar/sysdata/\n"
" The installer copies them with --standalone-copies.\n\n"
),
"retrodeck": (
"INSTALLATION GUIDE (Steam Deck / Linux)\n\n"
@@ -169,19 +172,22 @@ def _build_readme(
),
"retropie": (
"INSTALLATION GUIDE (Raspberry Pi)\n\n"
" Option A: Via network share\n"
" Option A: Automatic\n"
" -------------------\n"
" On the Pi (F4 from EmulationStation, or over SSH), run:\n\n"
" curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh\n\n"
" Option B: Via network share\n"
" --------------------------\n"
" 1. On your PC, open: \\\\RETROPIE\\bios\\\n"
" 2. Extract all files from this archive directly into that folder\n\n"
" Option B: Via SSH\n"
" Option C: Via SSH\n"
" -----------------\n"
" 1. SSH into your Pi: ssh pi@retropie\n"
" 2. Copy files to ~/RetroPie/BIOS/\n\n"
" Option C: Via SD card\n"
" ---------------------\n"
" 1. Put the SD card in your PC\n"
" 2. Navigate to /home/pi/RetroPie/BIOS/\n"
" 3. Extract all files from this archive directly into that folder\n\n"
" NOTE: the BIOS folder is on the card's Linux partition,\n"
" which Windows and macOS cannot open: copying through the\n"
" card works from a Linux computer only\n"
" (<rootfs>/home/pi/RetroPie/BIOS/).\n\n"
),
}
+42
View File
@@ -560,6 +560,48 @@ class ADamagedArchiveIsNotPacked(unittest.TestCase):
self.assertIn("set.zip", str(caught.exception))
class PackReadmesSayWhatTheInstallerDoes(unittest.TestCase):
"""The EmuDeck README promised keys set up automatically (they need
--standalone-copies) and gave a Citra path the installer never uses; the
RetroArch README offered only `| sh`, which Windows cannot run."""
def _guide(self, platform: str) -> str:
from packreadme import _build_readme
text = _build_readme(platform, platform, "", 1, 1)
return text[text.index("INSTALLATION"):text.index("TROUBLESHOOTING")]
def test_retroarch_offers_the_windows_installer(self):
guide = self._guide("retroarch")
self.assertIn("install.sh | sh", guide)
self.assertIn("install.ps1 | iex", guide)
def test_emudeck_keys_match_the_registry_and_the_flag(self):
import re
guide = self._guide("emudeck")
self.assertIn("--standalone-copies", guide)
self.assertNotIn("emulator keys automatically", guide)
self.assertNotIn("handles this for you", guide)
with (ROOT / "platforms" / "_registry.yml").open(encoding="utf-8") as handle:
registry = yaml.safe_load(handle)
targets = {
target.rstrip("/").replace("$HOME", "~")
for copy in registry["_standalone_copies"]
for target in copy.get("targets", {}).get("linux", [])
}
named = {
path.rstrip("/") for path in re.findall(r"-> (~/\S+)", guide)
}
self.assertTrue(named)
self.assertEqual(sorted(named - targets), [])
def test_retropie_never_sends_a_pc_to_the_linux_partition(self):
guide = self._guide("retropie")
self.assertNotIn("Put the SD card in your PC", guide)
self.assertIn("install.sh | sh", guide)
class FaqRegressions(unittest.TestCase):
"""The FAQ states facts the code owns; these tie it back to the source.