Skip to content

Commit 1e1447f

Browse files
authored
chore: static clean improvements (#526)
1 parent 8476f2d commit 1e1447f

File tree

1 file changed

+20
-21
lines changed

1 file changed

+20
-21
lines changed

src/Tempest/Http/src/Static/StaticCleanCommand.php

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@
44

55
namespace Tempest\Http\Static;
66

7+
use RecursiveDirectoryIterator;
8+
use RecursiveIteratorIterator;
9+
use SplFileInfo;
710
use Tempest\Console\Console;
811
use Tempest\Console\ConsoleCommand;
912
use Tempest\Console\HasConsole;
10-
use Tempest\Container\Container;
13+
use Tempest\Console\Middleware\CautionMiddleware;
14+
use Tempest\Console\Middleware\ForceMiddleware;
1115
use Tempest\Core\Kernel;
12-
use Tempest\Http\DataProvider;
13-
use function Tempest\path;
14-
use function Tempest\uri;
1516

1617
final readonly class StaticCleanCommand
1718
{
@@ -20,35 +21,33 @@
2021
public function __construct(
2122
private Console $console,
2223
private Kernel $kernel,
23-
private Container $container,
24-
private StaticPageConfig $staticPageConfig,
2524
) {
2625
}
2726

2827
#[ConsoleCommand(
29-
name: 'static:clean'
28+
name: 'static:clean',
29+
middleware: [ForceMiddleware::class, CautionMiddleware::class]
3030
)]
3131
public function __invoke(): void
3232
{
33-
$publicPath = path($this->kernel->root, 'public');
33+
/** @var SplFileInfo[] $files */
34+
$files = [];
3435

35-
foreach ($this->staticPageConfig->staticPages as $staticPage) {
36-
/** @var DataProvider $dataProvider */
37-
$dataProvider = $this->container->get($staticPage->dataProviderClass ?? GenericDataProvider::class);
36+
$directoryIterator = new RecursiveDirectoryIterator($this->kernel->root . '/public');
3837

39-
foreach ($dataProvider->provide() as $params) {
40-
$uri = parse_url(uri($staticPage->handler, ...$params), PHP_URL_PATH);
41-
42-
$file = path($publicPath, $uri . '/index.html');
38+
/** @var SplFileInfo $file */
39+
foreach (new RecursiveIteratorIterator($directoryIterator) as $file) {
40+
if ($file->getExtension() === 'html') {
41+
$files[] = $file;
42+
}
43+
}
4344

44-
if (! file_exists($file)) {
45-
continue;
46-
}
45+
foreach ($files as $file) {
46+
unlink($file->getPathname());
4747

48-
unlink($file);
48+
$pathName = str_replace('\\', '/', $file->getPathname());
4949

50-
$this->writeln("- <u>{$file}</u> removed");
51-
}
50+
$this->writeln("- <u>{$pathName}</u> removed");
5251
}
5352

5453
$this->success('Done');

0 commit comments

Comments
 (0)