feat: Implement Clean Architecture code generation with Mustache templates
- Added `clean-arch.generator.ts` for generating models, mappers, repositories, use cases, and providers based on OpenAPI specs. - Introduced `dto.generator.ts` to invoke `openapi-generator-cli` for generating DTOs and organizing them. - Created `report.generator.ts` to generate a JSON report of the generation process. - Implemented `analyzer.ts` for parsing OpenAPI/Swagger files and extracting relevant data. - Defined new types in `cli.types.ts`, `generation.types.ts`, `openapi.types.ts`, and `swagger.types.ts` for better type safety. - Added utility functions in `filesystem.ts` for creating directory structures and cleaning up temporary files. - Developed logging utilities in `logger.ts` for better console output. - Included OpenAPI generator checks and installation in `openapi-generator.ts`. - Added type mapping utility in `type-mapper.ts` for converting OpenAPI types to TypeScript types. - Updated `package.json` scripts to lint all TypeScript files. - Modified `tsconfig.json` to include all TypeScript files in the project.
This commit is contained in:
31
src/utils/filesystem.ts
Normal file
31
src/utils/filesystem.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import fs from 'fs-extra';
|
||||
import path from 'path';
|
||||
import { logSuccess, logInfo } from './logger';
|
||||
|
||||
/** Crea la estructura de directorios necesaria para Clean Architecture (idempotente). */
|
||||
export function createDirectoryStructure(baseDir: string): void {
|
||||
const dirs = [
|
||||
path.join(baseDir, 'data/dtos'),
|
||||
path.join(baseDir, 'data/repositories'),
|
||||
path.join(baseDir, 'data/mappers'),
|
||||
path.join(baseDir, 'domain/repositories'),
|
||||
path.join(baseDir, 'domain/use-cases'),
|
||||
path.join(baseDir, 'di/repositories'),
|
||||
path.join(baseDir, 'di/use-cases'),
|
||||
path.join(baseDir, 'entities/models')
|
||||
];
|
||||
|
||||
dirs.forEach((dir) => {
|
||||
fs.ensureDirSync(dir);
|
||||
});
|
||||
|
||||
logSuccess('Estructura de directorios creada');
|
||||
}
|
||||
|
||||
/** Elimina un directorio temporal y todo su contenido. */
|
||||
export function cleanup(tempDir: string): void {
|
||||
if (fs.existsSync(tempDir)) {
|
||||
fs.removeSync(tempDir);
|
||||
logInfo('Archivos temporales eliminados');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user