$i) { $err = fopen('php://stderr', 'w'); unlink($goner); fprintf($err, "gone: %s\n", $goner); } unlink($keepFilesFrom); } function _find($folder, $pattern = '/.*/', $filter = 'dfl'): array { $dir = new RecursiveDirectoryIterator($folder); $ite = new RecursiveIteratorIterator($dir); /** @var SplFileInfo[] $files */ $files = new RegexIterator($ite, $pattern, RegexIterator::MATCH); $ff = []; foreach($files as $file) { $f = false !== strpos($filter, 'f') && $file->isFile(); $d = false !== strpos($filter, 'd') && $file->isDir(); $l = false !== strpos($filter, 'l') && $file->isLink(); if ($f || $d || $l) $ff[] = $file->getPathname(); } return $ff; } function _cat(array $stuff): string { return join(PHP_EOL, $stuff) . PHP_EOL; } function _help() { preg_match_all('/\nfunction ([a-z][^:]+)/s', file_get_contents(__FILE__), $functions, PREG_PATTERN_ORDER); printf("Usage:\n\tphp %s fn-name\n\t..where fn is one of:\n\n", basename(__FILE__)); echo _cat($functions[1]); } function _main() { global $argc, $argv; if ($argc >= 2) { $path = $argv[2] ?? 'dist/'; switch ($argv[1]) { case 'build': echo _cat(build()); break; case 'save': echo _cat([save($path)]); break; case 'purge': foreach (['dist/', 'vendor/'] as $purgeDir) { purge($purgeDir); } break; default: _help(); } } if ($argc == 1) { _help(); } if ($_GET['build'] ?? false) { _cat(build()); } } _main();