diff --git a/packages/documentator/composer.json b/packages/documentator/composer.json index b26a2ff62..1435530da 100644 --- a/packages/documentator/composer.json +++ b/packages/documentator/composer.json @@ -23,6 +23,7 @@ "composer/semver": "^3.2", "laravel/framework": "^9.21.0|^10.0.0", "symfony/filesystem": "^6.3.0", + "symfony/finder": "^6.3.0", "symfony/process": "^6.3.0", "lastdragon-ru/lara-asp-core": "self.version", "lastdragon-ru/lara-asp-serializer": "self.version" diff --git a/packages/documentator/src/Commands/Preprocess.php b/packages/documentator/src/Commands/Preprocess.php new file mode 100644 index 000000000..519628d25 --- /dev/null +++ b/packages/documentator/src/Commands/Preprocess.php @@ -0,0 +1,55 @@ +argument('path') ?? $cwd); + $finder = Finder::create() + ->ignoreVCSIgnored(true) + ->in($path) + ->exclude('vendor') + ->exclude('node_modules') + ->files() + ->name('*.md'); + + foreach ($finder as $file) { + $this->components->task($file->getPathname(), static function () use ($preprocessor, $file): bool { + $path = $file->getPath(); + $content = $file->getContents(); + $result = $preprocessor->process($path, $content); + + return $content === $result + || file_put_contents($file->getPathname(), $result) !== false; + }); + } + } +} diff --git a/packages/documentator/src/Provider.php b/packages/documentator/src/Provider.php index b748d29e8..f921d0898 100644 --- a/packages/documentator/src/Provider.php +++ b/packages/documentator/src/Provider.php @@ -4,6 +4,7 @@ use Illuminate\Support\ServiceProvider; use LastDragon_ru\LaraASP\Core\Concerns\ProviderWithViews; +use LastDragon_ru\LaraASP\Documentator\Commands\Preprocess; use LastDragon_ru\LaraASP\Documentator\Commands\Requirements; class Provider extends ServiceProvider { @@ -13,6 +14,7 @@ public function boot(): void { $this->bootViews(); $this->commands( Requirements::class, + Preprocess::class, ); }