getOption('class'); $fresh = $input->hasOption('fresh'); try { // Ensure seeds table exists (auto-create if missing) $this->seedRepository->ensureSeedsTable(); // Clear seeds table if --fresh option is provided if ($fresh) { echo "⚠️ Clearing seeds table (--fresh option)...\n"; $this->seedRepository->clearAll(); echo "✅ Seeds table cleared.\n\n"; } if ($className !== null) { // Run specific seeder echo "Running seeder: {$className}\n"; $seeder = $this->seedLoader->load($className); if ($seeder === null) { echo "❌ Seeder '{$className}' not found or cannot be instantiated.\n"; return ExitCode::SOFTWARE_ERROR; } $this->seedRunner->run($seeder); echo "✅ Seeder '{$className}' completed.\n"; } else { // Run all seeders echo "Running all seeders...\n\n"; $seeders = $this->seedLoader->loadAll(); if (empty($seeders)) { echo "No seeders found.\n"; return ExitCode::SUCCESS; } echo sprintf("Found %d seeder(s):\n", count($seeders)); foreach ($seeders as $seeder) { echo " - {$seeder->getName()}: {$seeder->getDescription()}\n"; } echo "\n"; $this->seedRunner->runAll($seeders); echo "\n✅ All seeders completed.\n"; } return ExitCode::SUCCESS; } catch (\Throwable $e) { echo "❌ Seeding failed: " . $e->getMessage() . "\n"; echo "Error details: " . get_class($e) . "\n"; echo "File: " . $e->getFile() . ":" . $e->getLine() . "\n"; echo "Stack trace:\n" . $e->getTraceAsString() . "\n"; return ExitCode::SOFTWARE_ERROR; } } }