UNPKG

typescript-swagger

Version:

Generate Swagger files from a decorator library like typescript-rest or a @decorators/express.

76 lines (58 loc) 2.14 kB
#!/usr/bin/env node 'use strict'; import {ArgumentParser} from 'argparse'; import {Debugger} from 'debug'; import {useDebugger} from "../debug"; import {MetadataGenerator} from '../metadata/metadataGenerator'; import {SpecGenerator} from '../swagger/generator'; import {getCompilerOptions, getSwaggerConfig, validateSwaggerConfig} from "./utils"; const packageJson = require('../../package.json'); const debugLog : Debugger = useDebugger(); const workingDir: string = process.cwd(); const parser = new ArgumentParser({ addHelp: true, description: 'Typescript Swagger tool', version: packageJson.version }); parser.addArgument( ['-c', '--config'], { help: 'The swagger config file (swagger.json or swagger.yml or swaggerConfig.js).' } ); parser.addArgument( ['-t', '--tsconfig'], { action: 'storeTrue', defaultValue: false, help: 'Load tsconfig.json file', } ); parser.addArgument( ['-p', '--tsconfig_path'], { help: 'The tsconfig file (tsconfig.json) path. Default to {cwd}/tsconfig.json.', } ); const parameters = parser.parseArgs(); try { const config = getSwaggerConfig(workingDir, parameters.config); const compilerOptions = getCompilerOptions(parameters.tsconfig, parameters.tsconfig_path); debugLog('Starting Swagger generation tool'); debugLog('Compiler Options: %j', compilerOptions); const swaggerConfig = validateSwaggerConfig(workingDir, config.swagger); debugLog('Swagger Config: %j', swaggerConfig); debugLog('Processing Services Metadata'); const metadata = new MetadataGenerator(swaggerConfig.entryFile, compilerOptions, swaggerConfig.ignore).generate(); debugLog('Generated Metadata: %j', metadata); new SpecGenerator(metadata, swaggerConfig).generate() .then(() => { console.log('Generation completed'); }) .catch((err: any) => { console.log(`Error generating swagger. ${err}`); }); } catch (e) { console.log('Swagger config not found. Did you specify the path to the swagger config file?'); process.exit(1); }