addArgument('name', InputArgument::REQUIRED, 'O nome do módulo (ex: blog)'); } protected function execute(InputInterface $input, OutputInterface $output): int { $name = strtolower($input->getArgument('name')); $modulePath = dirname(__DIR__, 3) . '/modules/' . $name; if (is_dir($modulePath)) { $output->writeln("O módulo '{$name}' já existe."); return Command::FAILURE; } // Criar estrutura de diretórios $directories = [ $modulePath, $modulePath . '/routes', $modulePath . '/views', $modulePath . '/classes', $modulePath . '/classes/Controllers', $modulePath . '/classes/Models', ]; foreach ($directories as $dir) { if (!mkdir($dir, 0755, true)) { $output->writeln("Falha ao criar diretório: {$dir}"); return Command::FAILURE; } } // Criar module.json $moduleJson = [ 'name' => ucfirst($name), 'version' => '1.0.0', 'description' => 'Descrição do módulo ' . ucfirst($name), 'author' => 'SysCMS', 'enabled' => true ]; file_put_contents($modulePath . '/module.json', json_encode($moduleJson, JSON_PRETTY_PRINT)); // Criar rotas web.php $webRoutes = <<group('/{$name}', function (\$group) { \$group->get('', [\Modules\\ucfirst($name)\Controllers\\ucfirst($name)Controller::class, 'index']); }); PHP; file_put_contents($modulePath . '/routes/web.php', $webRoutes); // Criar rotas api.php $apiRoutes = " 'Módulo ' . ucfirst('{$name}') ]); } } PHP; file_put_contents($modulePath . '/classes/Controllers/' . $controllerName . '.php', $controllerTemplate); // Criar view inicial $viewTemplate = << {{ title }} Este é o módulo {{ title }} gerado automaticamente. {% endblock %} HTML; file_put_contents($modulePath . '/views/index.twig', $viewTemplate); $output->writeln("Módulo '{$name}' criado com sucesso em modules/{$name}"); return Command::SUCCESS; } }