UNPKG

@apiture/api-ref-resolver

Version:

Tool to merge multiple OpenAPI or AsyncAPI documents that use JSON Reference links (`$ref`) to reference API definition elements across source files.

50 lines 1.94 kB
#!/usr/bin/env node "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const fs = require("fs"); const commander_1 = require("commander"); const mkdirs = require("mkdirs"); const path = require("path"); const yaml = require("js-yaml"); const package_json_1 = require("../package.json"); const ApiRefResolver_1 = require("./ApiRefResolver"); async function main(args = process.argv) { const cli = new commander_1.Command(); cli .version(package_json_1.version) .usage('[options]') .option('-i, --input <input-file>', 'An openapi.yaml or asyncapi.yaml file name or URL. Defaults to "pi.yaml"') .option('-o, --output <output-file>', 'The output file, defaults to stdout if omitted') .option('-f, --format [yaml|json]', 'Output format for stdout if no --output option is used; default to yaml') .option('-n, --no-markers', 'Do not add x-resolved-from and x-resolved-at markers') .option('-v, --verbose', 'Verbose output') .parse(args); const opts = cli.opts(); const sourceFileName = opts.input || 'api.yaml'; const outputFileName = opts.output; const resolver = new ApiRefResolver_1.ApiRefResolver(sourceFileName); const options = {}; options.verbose = opts.verbose; options.noMarkers = opts.noMarkers; resolver .resolve(options) .then((resolved) => { if (outputFileName) { const outDir = path.dirname(outputFileName); mkdirs(outDir); fs.writeFileSync(outputFileName, yaml.dump(resolved.api), 'utf8'); } else if (opts.format === 'json') { console.log(JSON.stringify(resolved.api, null, 2)); } else { console.log(yaml.dump(resolved.api)); } }) .catch((ex) => { console.error(ex.message); process.exit(1); }); } main(process.argv); //# sourceMappingURL=cli.js.map