addArgument('class', InputArgument::OPTIONAL, 'O nome da classe seeder específica para rodar'); } protected function execute(InputInterface $input, OutputInterface $output): int { $className = $input->getArgument('class'); $seedersPath = dirname(__DIR__, 3) . '/database/seeders'; if (!is_dir($seedersPath)) { $output->writeln('Diretório de seeders não encontrado.'); return Command::FAILURE; } if ($className) { return $this->runSeeder($className, $seedersPath, $output); } // Se não especificou classe, tenta rodar o DatabaseSeeder ou todos os arquivos .php $dbSeederFile = $seedersPath . '/DatabaseSeeder.php'; if (file_exists($dbSeederFile)) { return $this->runSeeder('DatabaseSeeder', $seedersPath, $output); } $files = glob($seedersPath . '/*.php'); if (empty($files)) { $output->writeln('Nenhum seeder encontrado.'); return Command::SUCCESS; } foreach ($files as $file) { $name = basename($file, '.php'); if ($name === 'DatabaseSeeder') continue; // Já rodamos se existisse $this->runSeeder($name, $seedersPath, $output); } return Command::SUCCESS; } protected function runSeeder(string $name, string $path, OutputInterface $output): int { $file = $path . '/' . $name . '.php'; if (!file_exists($file)) { $output->writeln("Seeder não encontrado: {$name}"); return Command::FAILURE; } $output->write("Rodando seeder: {$name}... "); try { require_once $file; if (class_exists($name)) { $seeder = new $name(); if (method_exists($seeder, 'run')) { $seeder->run(); $output->writeln('OK'); return Command::SUCCESS; } else { $output->writeln('Método run() não encontrado.'); return Command::FAILURE; } } else { $output->writeln("Classe {$name} não encontrada no arquivo."); return Command::FAILURE; } } catch (\Exception $e) { $output->writeln("FALHA"); $output->writeln("Erro: " . $e->getMessage() . ""); return Command::FAILURE; } } }