diff --git a/main.ts b/main.ts index 3664d84..92861c7 100755 --- a/main.ts +++ b/main.ts @@ -30,18 +30,14 @@ import packageJson from './package.json'; program .name('generate-clean-arch') - .description('Generador de código Angular con Clean Architecture desde OpenAPI/Swagger') + .description('Angular Clean Architecture code generator from OpenAPI/Swagger') .version(packageJson.version) - .option('-i, --input ', 'Archivo OpenAPI/Swagger (yaml o json)', 'swagger.yaml') - .option('-o, --output ', 'Directorio de salida', './src/app') - .option( - '-t, --templates ', - 'Directorio de templates personalizados', - path.join(__dirname, 'templates') - ) - .option('--skip-install', 'No instalar dependencias') - .option('--dry-run', 'Simular sin generar archivos') - .option('-s, --select-endpoints', 'Seleccionar interactivamente qué tags y endpoints generar') + .option('-i, --input ', 'OpenAPI/Swagger file (yaml or json)', 'swagger.yaml') + .option('-o, --output ', 'Output directory', './src/app') + .option('-t, --templates ', 'Custom templates directory', path.join(__dirname, 'templates')) + .option('--skip-install', 'Skip dependency installation') + .option('--dry-run', 'Simulate without generating files') + .option('-s, --select-endpoints', 'Interactively select which tags and endpoints to generate') .parse(process.argv); const options = program.opts(); @@ -55,36 +51,36 @@ async function main(): Promise { console.log('='.repeat(60) + '\n'); if (!fs.existsSync(options.input)) { - logError(`Archivo no encontrado: ${options.input}`); + logError(`File not found: ${options.input}`); process.exit(1); } - logInfo(`Archivo de entrada: ${options.input}`); - logInfo(`Directorio de salida: ${options.output}`); + logInfo(`Input file: ${options.input}`); + logInfo(`Output directory: ${options.output}`); logInfo(`Templates: ${options.templates}`); if (options.dryRun) { - logWarning('Modo DRY RUN - No se generarán archivos'); + logWarning('DRY RUN mode — no files will be generated'); } if (!checkOpenApiGenerator()) { - logWarning('OpenAPI Generator CLI no encontrado'); + logWarning('OpenAPI Generator CLI not found'); if (!options.skipInstall) { installOpenApiGenerator(); } else { logError( - 'Instala openapi-generator-cli con: npm install -g @openapitools/openapi-generator-cli' + 'Install openapi-generator-cli with: npm install -g @openapitools/openapi-generator-cli' ); process.exit(1); } } else { - logSuccess('OpenAPI Generator CLI encontrado'); + logSuccess('OpenAPI Generator CLI found'); } const analysis = analyzeSwagger(options.input); if (options.dryRun) { - logInfo('Finalizando en modo DRY RUN'); + logInfo('Finishing in DRY RUN mode'); return; } @@ -110,19 +106,15 @@ async function main(): Promise { const envContent = fs.readFileSync(envFile, 'utf8'); apiKeys = parseApiKeys(envContent); logSuccess( - `environment.ts encontrado: ${colors.cyan}${path.relative(process.cwd(), envFile)}${colors.reset}` + `environment.ts found: ${colors.cyan}${path.relative(process.cwd(), envFile)}${colors.reset}` ); if (apiKeys.length > 0) { - logInfo(`Claves de API detectadas: ${apiKeys.map((k) => k.key).join(', ')}`); + logInfo(`Detected API keys: ${apiKeys.map((k) => k.key).join(', ')}`); } else { - logWarning( - 'No se encontraron claves con "api" en environment.ts. Se solicitará manualmente.' - ); + logWarning('No keys containing "api" found in environment.ts. Will be requested manually.'); } } else { - logWarning( - 'No se encontró environment.ts. Se solicitará la clave manualmente por repositorio.' - ); + logWarning('No environment.ts found. The key will be requested manually per repository.'); } const tagApiKeyMap = await askApiKeysForTags(selectedTags, apiKeys); @@ -143,20 +135,20 @@ async function main(): Promise { const report = generateReport(options.output, analysis); console.log('\n' + '='.repeat(60)); - log(' ✨ Generación completada con éxito', 'green'); + log(' ✨ Generation completed successfully', 'green'); console.log('='.repeat(60)); - console.log(`\n📊 Resumen:`); - console.log(` - DTOs generados: ${report.structure.dtos}`); - console.log(` - Repositories: ${report.structure.repositories}`); - console.log(` - Mappers: ${report.structure.mappers}`); - console.log(` - Use Cases: ${report.structure.useCases}`); - console.log(` - Providers: ${report.structure.providers}`); - console.log(`\n📁 Archivos generados en: ${colors.cyan}${options.output}${colors.reset}\n`); + console.log(`\n📊 Summary:`); + console.log(` - DTOs generated: ${report.structure.dtos}`); + console.log(` - Repositories: ${report.structure.repositories}`); + console.log(` - Mappers: ${report.structure.mappers}`); + console.log(` - Use Cases: ${report.structure.useCases}`); + console.log(` - Providers: ${report.structure.providers}`); + console.log(`\n📁 Files generated in: ${colors.cyan}${options.output}${colors.reset}\n`); } main().catch((error: unknown) => { const err = error as Error; - logError(`Error fatal: ${err.message}`); + logError(`Fatal error: ${err.message}`); console.error(error); process.exit(1); });