Files
Adminator 1e51ef7def Nachtrag: alle bisher untracked Ordner + hängende Änderungen mit-committen
- Konzept/, didaktik_geografie/, didaktik_simulation/, v2-modules/, v2-platform/
- 12 code-workspace-Files
- STATUS-*.md
- viele M/D/R-Änderungen an bereits getrackten Files
- .gitignore verstärkt: **/.humaninput/, **/secret_keys.txt

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-08 02:27:02 +02:00

79 lines
2.4 KiB
PHP

<?php
declare(strict_types=1);
/**
* Prüft, ob alle in manifest.sharedAssets deklarierten Assets im
* Plattform-Pool existieren.
*
* Pool-Pfad ist relativ zum Repo-Root: v2-platform/assets/shared/<kategorie>/<slug>.<ext>
* Wir suchen den Repo-Root, indem wir aus dem Modul-Pfad (v2-modules/<slug>) zwei Ebenen hoch gehen.
*/
function check_shared_assets(string $moduleDir, array $m, Report $r): void {
if (empty($m['sharedAssets'])) {
$r->ok("sharedAssets: keine deklariert (ok)");
return;
}
if (!is_array($m['sharedAssets'])) {
$r->fail("sharedAssets muss ein Objekt sein");
return;
}
// Repo-Root finden (v2-modules/<slug> → ..)
$repoRoot = realpath($moduleDir . '/../../');
if (!$repoRoot) {
$r->warn("Repo-Root nicht auflösbar — sharedAssets-Check übersprungen");
return;
}
$poolBase = $repoRoot . '/v2-platform/assets/shared';
if (!is_dir($poolBase)) {
$r->warn("Shared-Pool fehlt im Repository: $poolBase");
return;
}
// Erlaubte Extensions pro Kategorie
$extByCategory = [
'cities' => ['png', 'jpg', 'webp'],
'icons' => ['svg', 'png'],
'glossar' => ['png', 'svg', 'jpg'],
'bg-music' => ['mp3', 'ogg'],
'ui-sounds' => ['mp3', 'ogg', 'wav'],
];
$missing = [];
$checked = 0;
foreach ($m['sharedAssets'] as $category => $slugs) {
if (!is_array($slugs)) {
$r->fail("sharedAssets.$category muss ein Array sein");
continue;
}
$categoryDir = "$poolBase/$category";
if (!is_dir($categoryDir)) {
$r->fail("Pool-Kategorie '$category' existiert nicht: $categoryDir");
continue;
}
$exts = $extByCategory[$category] ?? ['png', 'svg', 'jpg', 'mp3'];
foreach ($slugs as $slug) {
$checked++;
$found = false;
foreach ($exts as $ext) {
if (file_exists("$categoryDir/$slug.$ext")) {
$found = true;
break;
}
}
if (!$found) {
$missing[] = "$category/$slug (geprüfte Extensions: " . implode('|', $exts) . ")";
}
}
}
if ($missing) {
$r->fail("Fehlende Shared-Assets — bei Atlas in _inbox/zentrale/ bestellen", $missing);
} else {
$r->ok("Alle $checked Shared-Assets im Pool gefunden");
}
}