@verizonconnect/ngx-form-generator
Version:
Generates an Angular ReactiveForm from a Swagger or OpenAPI definition
48 lines (47 loc) • 1.75 kB
JavaScript
;
/**
* @license
* Licensed under the MIT License, (“the License”); you may not use this
* file except in compliance with the License.
*
* Copyright (c) 2020 Verizon
*/
Object.defineProperty(exports, "__esModule", { value: true });
const generator_lib_1 = require("./generator-lib");
const path_1 = require("path");
const yargs = require('yargs');
async function main() {
const argv = yargs
.option('input-spec', {
alias: ['i', 'swaggerUrl'],
description: 'Location of the OpenAPI spec as a URL or file path',
type: 'string',
require: true
})
.option('output', {
alias: ['o', 'outDir'],
description: 'Where to write the generated files',
type: 'string'
})
.option('file-name', {
alias: ['f', 'outFile'],
description: 'Generated file name',
type: 'string'
})
.help()
.wrap(null)
.usage('Generates Angular ReactiveForms from an OpenAPI v2 or v3 spec.\n\n Usage: $0 -i <spec> -o <path>')
.example('ngx-form-generator -i https://petstore.swagger.io/v2/swagger.json -o petstore-forms')
.example('ngx-form-generator -i https://petstore.swagger.io/v2/swagger.yaml -o petstore-forms')
.example('npx ngx-form-generator -i swagger.json -o project/form/src/lib')
.alias('help', 'h').argv;
const spec = await generator_lib_1.loadSpec(argv['input-spec']);
const file = generator_lib_1.makeForm(spec);
let fileName = argv['file-name'] || generator_lib_1.makeFileName(spec) || 'forms.ts';
if (argv.output) {
fileName = path_1.join(argv.output, fileName);
}
await generator_lib_1.saveFile(file, fileName);
}
main();