#!/usr/bin/env php '); exit(1); } $fromFile = $argv[1]; if (!file_exists($fromFile)) { line('File not found: ' . $fromFile); exit(1); } $toFile = $argv[2]; if (file_exists($toFile)) { line('File already exists: ' . $toFile); exit(1); } function getLineIncludeFile(string $line): false|string { if (str_starts_with($line, 'include')) { preg_match("/include\s+'([^']+)'/", $line, $matches); return $matches[1]; } return false; } function getAllLines(string $file): iterable { $handle = fopen($file, 'r'); while (!feof($handle)) { yield fgets($handle); } fclose($handle); } function replaceIncludes(string $file, int $depth = 0): iterable { foreach (getAllLines($file) as $line) { $includeFile = getLineIncludeFile($line); if ($includeFile) { yield from replaceIncludes($includeFile, $depth + 1); } else { if ($depth > 0 && str_starts_with($line, '