/ и images/demo-N/<пример>/. */ declare(strict_types=1); $root = dirname(__DIR__); $failures = []; foreach ([ 'images/demo/1/source.avif', 'images/demo/1/result.avif', 'images/demo/1/thumb.avif', 'images/demo/5/source_mob.avif', 'images/demo-2/1/source.avif', 'images/demo-2/5/result_mob.avif', ] as $relativePath) { if (!is_file($root . '/' . $relativePath)) { $failures[] = "Отсутствует Index-совместимый asset {$relativePath}."; } } foreach ([ 'images/demo/1/1', 'images/demo/2/1', ] as $legacyPath) { if (is_dir($root . '/' . $legacyPath)) { $failures[] = "Не должна оставаться промежуточная группировка {$legacyPath}."; } } $template = (string) file_get_contents($root . '/template.php'); $examples = (string) file_get_contents($root . '/components/examples.php'); $pathBuilder = "\$demoDirName = 'demo' . (\$indpic === '1' ? '' : '-' . \$indpic);"; if (!str_contains($template, $pathBuilder) || !str_contains($examples, $pathBuilder) || !str_contains($template, '"/images/{$demoDirName}/1"') || !str_contains($examples, '"/images/{$demoDirName}"')) { $failures[] = 'Template и examples должны строить путь из Index-совместимого имени demo/demo-N.'; } if ($failures !== []) { fwrite(STDERR, "FAILED\n- " . implode("\n- ", $failures) . "\n"); exit(1); } fwrite(STDOUT, "OK: Preland demo layout matches Index\n");