@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
JavaScript
;
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