1e51ef7def
- 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>
83 lines
2.5 KiB
PHP
83 lines
2.5 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* Prüft Pflicht-Files und referenzierte Asset-Pfade.
|
|
*/
|
|
function check_files(string $dir, array $m, Report $r): void {
|
|
// Pflicht-Files
|
|
$required = [
|
|
'README.md',
|
|
'db/migrations.sql',
|
|
'tests/mock-platform.html',
|
|
];
|
|
foreach ($required as $f) {
|
|
if (file_exists("$dir/$f")) {
|
|
$r->ok("Pflicht-File vorhanden: $f");
|
|
} else {
|
|
$r->fail("Pflicht-File fehlt: $f");
|
|
}
|
|
}
|
|
|
|
// CHANGELOG ab Version > 1.0.0
|
|
if (!empty($m['version']) && version_compare($m['version'], '1.0.0', '>')) {
|
|
if (file_exists("$dir/CHANGELOG.md")) {
|
|
$r->ok("CHANGELOG.md vorhanden");
|
|
} else {
|
|
$r->warn("CHANGELOG.md fehlt (Pflicht ab Modul-Version > 1.0.0)");
|
|
}
|
|
}
|
|
|
|
// Entry-HTML
|
|
if (!empty($m['entryHtml'])) {
|
|
$entry = $m['entryHtml'];
|
|
if (file_exists("$dir/$entry")) {
|
|
$r->ok("entryHtml existiert: $entry");
|
|
} else {
|
|
$r->fail("entryHtml referenziert, aber Datei fehlt: $entry");
|
|
}
|
|
}
|
|
|
|
// Card-Bild
|
|
if (!empty($m['cardImage'])) {
|
|
if (file_exists("$dir/{$m['cardImage']}")) {
|
|
$r->ok("cardImage existiert: {$m['cardImage']}");
|
|
} else {
|
|
$r->fail("cardImage referenziert, aber Datei fehlt: {$m['cardImage']}");
|
|
}
|
|
}
|
|
|
|
// Screenshots
|
|
if (!empty($m['screenshots']) && is_array($m['screenshots'])) {
|
|
foreach ($m['screenshots'] as $shot) {
|
|
if (file_exists("$dir/$shot")) {
|
|
$r->ok("screenshot existiert: $shot");
|
|
} else {
|
|
$r->fail("screenshot referenziert, aber Datei fehlt: $shot");
|
|
}
|
|
}
|
|
}
|
|
|
|
// Verbotene Files
|
|
$forbidden = ['.env.local', 'node_modules', '.git'];
|
|
foreach ($forbidden as $f) {
|
|
if (file_exists("$dir/$f")) {
|
|
$r->fail("Verbotenes File/Verzeichnis im Lieferpaket: $f");
|
|
}
|
|
}
|
|
|
|
// Großdateien (>50 MB)
|
|
$bigFiles = [];
|
|
$rii = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS));
|
|
foreach ($rii as $file) {
|
|
if ($file->isFile() && $file->getSize() > 50 * 1024 * 1024) {
|
|
$bigFiles[] = sprintf("%s (%.1f MB)", str_replace($dir . DIRECTORY_SEPARATOR, '', $file->getPathname()), $file->getSize() / 1024 / 1024);
|
|
}
|
|
}
|
|
if ($bigFiles) {
|
|
$r->warn("Großdateien > 50 MB gefunden (Ausnahme bei Atlas beantragen)", $bigFiles);
|
|
} else {
|
|
$r->ok("Keine Großdateien über 50 MB");
|
|
}
|
|
}
|