feat: add base url mechanism
This commit is contained in:
30
main.ts
30
main.ts
@@ -10,9 +10,12 @@ import { checkOpenApiGenerator, installOpenApiGenerator } from './src/utils/open
|
||||
import { createDirectoryStructure, cleanup } from './src/utils/filesystem';
|
||||
import { analyzeSwagger } from './src/swagger/analyzer';
|
||||
import { generateCode, organizeFiles, addDtoImports } from './src/generators/dto.generator';
|
||||
import { generateCleanArchitecture } from './src/generators/clean-arch.generator';
|
||||
import { generateCleanArchitecture, extractTagsFromAnalysis } from './src/generators/clean-arch.generator';
|
||||
import { generateReport } from './src/generators/report.generator';
|
||||
import { findEnvironmentFile, parseApiKeys } from './src/utils/environment-finder';
|
||||
import { askApiKeysForTags } from './src/utils/prompt';
|
||||
import type { CliOptions } from './src/types';
|
||||
import packageJson from './package.json';
|
||||
|
||||
// Desactivar escape HTML para que los literales < y > generen tipos genéricos válidos de TS.
|
||||
(mustache as { escape: (text: string) => string }).escape = function (text: string): string {
|
||||
@@ -24,7 +27,7 @@ import type { CliOptions } from './src/types';
|
||||
program
|
||||
.name('generate-clean-arch')
|
||||
.description('Generador de código Angular con Clean Architecture desde OpenAPI/Swagger')
|
||||
.version('1.0.0')
|
||||
.version(packageJson.version)
|
||||
.option('-i, --input <file>', 'Archivo OpenAPI/Swagger (yaml o json)', 'swagger.yaml')
|
||||
.option('-o, --output <dir>', 'Directorio de salida', './src/app')
|
||||
.option(
|
||||
@@ -82,10 +85,31 @@ async function main(): Promise<void> {
|
||||
|
||||
createDirectoryStructure(options.output);
|
||||
|
||||
// ── ENVIRONMENT API KEY SELECTION ──────────────────────────────────────────
|
||||
const tags = extractTagsFromAnalysis(analysis);
|
||||
const envFile = findEnvironmentFile(process.cwd());
|
||||
let apiKeys: ReturnType<typeof parseApiKeys> = [];
|
||||
|
||||
if (envFile) {
|
||||
const envContent = fs.readFileSync(envFile, 'utf8');
|
||||
apiKeys = parseApiKeys(envContent);
|
||||
logSuccess(`environment.ts encontrado: ${colors.cyan}${path.relative(process.cwd(), envFile)}${colors.reset}`);
|
||||
if (apiKeys.length > 0) {
|
||||
logInfo(`Claves de API detectadas: ${apiKeys.map((k) => k.key).join(', ')}`);
|
||||
} else {
|
||||
logWarning('No se encontraron claves con "api" en environment.ts. Se solicitará manualmente.');
|
||||
}
|
||||
} else {
|
||||
logWarning('No se encontró environment.ts. Se solicitará la clave manualmente por repositorio.');
|
||||
}
|
||||
|
||||
const tagApiKeyMap = await askApiKeysForTags(tags, apiKeys);
|
||||
// ──────────────────────────────────────────────────────────────────────────
|
||||
|
||||
const tempDir = generateCode(options.input, options.templates);
|
||||
organizeFiles(tempDir, options.output);
|
||||
addDtoImports(options.output);
|
||||
generateCleanArchitecture(analysis, options.output, options.templates);
|
||||
generateCleanArchitecture(analysis, options.output, options.templates, tagApiKeyMap);
|
||||
cleanup(tempDir);
|
||||
|
||||
const report = generateReport(options.output, analysis);
|
||||
|
||||
Reference in New Issue
Block a user