2022-04-13 16:57:33 +05:30
|
|
|
/* eslint-disable */
|
|
|
|
const $RefParser = require('@apidevtools/json-schema-ref-parser');
|
|
|
|
const path = require('path');
|
|
|
|
const fs = require('fs');
|
2022-04-22 06:10:48 +05:30
|
|
|
const fse = require('fs-extra');
|
2022-04-13 16:57:33 +05:30
|
|
|
|
2022-04-22 06:10:48 +05:30
|
|
|
const cwd = process.cwd();
|
|
|
|
|
|
|
|
const schemaDir =
|
|
|
|
'../../../../../catalog-rest-service/src/main/resources/json/schema';
|
|
|
|
|
|
|
|
const rootDir = 'connTemp';
|
|
|
|
const srcDir = 'schema/entity/services/connections';
|
2022-04-13 16:57:33 +05:30
|
|
|
const destDir = 'src/jsons/connectionSchemas/connections';
|
2022-04-22 06:10:48 +05:30
|
|
|
|
|
|
|
const playDir = `${rootDir}/${srcDir}/${rootDir}`;
|
2022-04-13 16:57:33 +05:30
|
|
|
|
|
|
|
const globalParserOptions = {
|
|
|
|
continueOnError: true,
|
|
|
|
dereference: {
|
|
|
|
circular: true,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
async function parseSchema(filePath, destPath) {
|
|
|
|
try {
|
|
|
|
const parser = new $RefParser(globalParserOptions);
|
|
|
|
const schema = await parser.parse(filePath);
|
|
|
|
const api = await parser.bundle(schema);
|
2022-04-22 06:10:48 +05:30
|
|
|
const dirname = `${cwd}/${path.dirname(destPath)}`;
|
2022-04-13 16:57:33 +05:30
|
|
|
if (!fs.existsSync(dirname)) {
|
|
|
|
try {
|
|
|
|
fs.mkdirSync(dirname, { recursive: true });
|
|
|
|
} catch (err) {
|
|
|
|
console.log(err);
|
|
|
|
}
|
|
|
|
}
|
2022-04-22 06:10:48 +05:30
|
|
|
fs.writeFileSync(`${cwd}/${destPath}`, JSON.stringify(api, null, 2));
|
2022-04-13 16:57:33 +05:30
|
|
|
} catch (err) {
|
|
|
|
console.log(err);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function traverseDirectory(Directory) {
|
|
|
|
fs.readdirSync(Directory).forEach((File) => {
|
|
|
|
const Absolute = path.join(Directory, File);
|
|
|
|
if (fs.statSync(Absolute).isDirectory()) {
|
|
|
|
return traverseDirectory(Absolute);
|
|
|
|
} else {
|
|
|
|
const name = Absolute.replace(srcDir, destDir);
|
|
|
|
return parseSchema(Absolute, name);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2022-04-22 06:10:48 +05:30
|
|
|
function copySourceFiles() {
|
|
|
|
try {
|
|
|
|
fse.copySync(schemaDir, `${rootDir}/schema`);
|
|
|
|
fse.copySync(schemaDir, `${playDir}/schema`);
|
|
|
|
} catch (err) {
|
|
|
|
console.error(err);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-04-13 16:57:33 +05:30
|
|
|
function main() {
|
|
|
|
try {
|
2022-04-22 06:10:48 +05:30
|
|
|
if (fs.existsSync(destDir)) {
|
|
|
|
fs.rmSync(destDir, { recursive: true });
|
|
|
|
}
|
2022-04-13 16:57:33 +05:30
|
|
|
fs.mkdirSync(destDir, { recursive: true });
|
2022-04-22 06:10:48 +05:30
|
|
|
copySourceFiles();
|
2022-04-13 16:57:33 +05:30
|
|
|
} catch (err) {
|
|
|
|
console.log(err);
|
|
|
|
}
|
|
|
|
|
2022-04-22 06:10:48 +05:30
|
|
|
process.chdir(`${cwd}/${playDir}`);
|
|
|
|
|
|
|
|
fs.readdir(srcDir, (err, Files) => {
|
|
|
|
if (err) console.log(err);
|
|
|
|
else {
|
|
|
|
Files.forEach((File, index) => {
|
|
|
|
const Absolute = path.join(srcDir, File);
|
|
|
|
if (fs.statSync(Absolute).isDirectory()) {
|
|
|
|
traverseDirectory(Absolute);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
2022-04-13 16:57:33 +05:30
|
|
|
}
|
|
|
|
|
|
|
|
main();
|