UNPKG

@protocolnebula/ts-openapi-generator

Version:

Build API and models from Swagger/OpenAPI to use in any project type

71 lines (62 loc) 2.41 kB
import * as fs from 'fs-extra'; import { config, ConfigI } from './models/config.model'; import { FileReaderService } from './services/parsers/file-reader.service'; import { APIParserService } from './services/parsers/open-api-v3/api-parser.service'; import { ComponentsParserService } from './services/parsers/open-api-v3/components-parser.service'; import { ApiWritterService } from './services/writters/api-writter.service'; import { ModelWritterService } from './services/writters/model-writter.service'; import { Store } from './stores/entities.store'; // Read the file export async function generateAPIFiles(config: ConfigI) { try { // Check if the template does not exist config.templatePath; console.log(''); if (config.cleanFolder) { console.log('Removing previously generated data...'); fs.removeSync(config.exportPath); } else { console.log('no-clean flag received, clean folder skipped'); } console.log(''); console.log('Opening file:', config.fileURI); const fileParser = new FileReaderService(config.fileURI, config); console.log('Parsing file...'); console.log(''); const documentParsed = await fileParser.readFile(); fileParser.showDocumentInfo(); const modelParser = new ComponentsParserService(documentParsed, Store); modelParser.process(); const apiParser = new APIParserService(documentParsed, Store); apiParser.process(); console.info('Read complete'); console.info(''); if (config.template) { console.info('Generating files'); const modelWritter = new ModelWritterService(Store, config); modelWritter.write(); const apiWritter = new ApiWritterService(Store, config); apiWritter.write(); console.info('Files generation finished'); } else { console.info('No template specified, no APIs/MODELs will be generated'); } if (config.mock) { console.info('Generating mock files'); const generator = config.mock.generateBuilder(); await generator.generate(); console.log(); console.info('Mock files generation finished'); } console.log(); } catch (exception) { console.error('FATAL ERROR'); console.error(exception); // Close up to three levels console.groupEnd(); console.groupEnd(); console.groupEnd(); console.log(''); console.error('Application stopped'); } }