Files
redocly-cli/definitions/customRules.js
2019-12-17 20:40:33 +02:00

49 lines
978 B
JavaScript

/* eslint-disable max-classes-per-file */
const fs = require('fs');
const path = require('path');
class OverlaysMerger {
static get rule() {
return 'writeCheck';
}
any() {
return {
onEnter: (node, type, ctx) => {
if (node['x-redocly-overlay']) {
const definitionDir = path.dirname(ctx.filePath);
const overlayPath = path.resolve(definitionDir, node['x-redocly-overlay'].path);
if (fs.existsSync(overlayPath)) {
const patch = JSON.parse(fs.readFileSync(overlayPath));
Object.keys(patch).forEach((k) => {
node[k] = patch[k];
});
delete node['x-redocly-overlay'];
}
}
},
};
}
}
class MergeChecker {
static get rule() {
return 'mergerCheck';
}
OpenAPIInfo() {
return {
onEnter: (node, type, ctx) => {
console.log(node);
},
};
}
}
module.exports = [
OverlaysMerger, MergeChecker,
];