OpenMetadata/openmetadata-ui/src/main/resources/ui/parseConnectionSchema.js

92 lines
2.2 KiB
JavaScript
Raw Normal View History

/* eslint-disable */
const $RefParser = require('@apidevtools/json-schema-ref-parser');
const path = require('path');
const fs = require('fs');
const fse = require('fs-extra');
const cwd = process.cwd();
const schemaDir =
'../../../../../catalog-rest-service/src/main/resources/json/schema';
const rootDir = 'connTemp';
const srcDir = 'schema/entity/services/connections';
const destDir = 'src/jsons/connectionSchemas/connections';
const playDir = `${rootDir}/${srcDir}/${rootDir}`;
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);
const dirname = `${cwd}/${path.dirname(destPath)}`;
if (!fs.existsSync(dirname)) {
try {
fs.mkdirSync(dirname, { recursive: true });
} catch (err) {
console.log(err);
}
}
fs.writeFileSync(`${cwd}/${destPath}`, JSON.stringify(api, null, 2));
} 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);
}
});
}
function copySourceFiles() {
try {
fse.copySync(schemaDir, `${rootDir}/schema`);
fse.copySync(schemaDir, `${playDir}/schema`);
} catch (err) {
console.error(err);
}
}
function main() {
try {
if (fs.existsSync(destDir)) {
fs.rmSync(destDir, { recursive: true });
}
fs.mkdirSync(destDir, { recursive: true });
copySourceFiles();
} catch (err) {
console.log(err);
}
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);
}
});
}
});
}
main();