inti project
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use App\Support\Release\MigrationValidationRunner;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\File;
|
||||
|
||||
final class ReleaseMigrationValidateCommand extends Command
|
||||
{
|
||||
protected $signature = 'app:release-migration-validate {--module=all}';
|
||||
protected $description = 'Run modular migration validation checks.';
|
||||
|
||||
public function handle(MigrationValidationRunner $runner): int
|
||||
{
|
||||
$results = array_map(fn ($result): array => $result->toArray(), $runner->runAll());
|
||||
$summary = [
|
||||
'generated_at' => now()->toIso8601String(),
|
||||
'results' => $results,
|
||||
'status' => collect($results)->every(fn ($result): bool => $result['status'] === 'pass') ? 'pass' : 'fail',
|
||||
];
|
||||
|
||||
$path = storage_path('app/generated/release-validation/validation-summary.json');
|
||||
File::ensureDirectoryExists(dirname($path));
|
||||
File::put($path, json_encode($summary, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
|
||||
|
||||
$this->info('Migration validation summary written to '.$path);
|
||||
$this->line(json_encode($summary, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
|
||||
|
||||
return $summary['status'] === 'pass' ? self::SUCCESS : self::FAILURE;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user