64 lines
2.4 KiB
JavaScript
64 lines
2.4 KiB
JavaScript
const fs = require("fs");
|
||
const path = require("path");
|
||
const fetchPluginDocs = require("../../website/components/remote-plugin-docs/utils/fetch-plugin-docs");
|
||
|
||
const COLOR_RESET = "\x1b[0m";
|
||
const COLOR_GREEN = "\x1b[32m";
|
||
const COLOR_BLUE = "\x1b[34m";
|
||
const COLOR_RED = "\x1b[31m";
|
||
|
||
async function checkPluginDocs() {
|
||
const failureMessages = [];
|
||
const pluginsPath = "website/data/docs-remote-plugins.json";
|
||
const pluginsFile = fs.readFileSync(path.join(process.cwd(), pluginsPath));
|
||
const pluginEntries = JSON.parse(pluginsFile);
|
||
const entriesCount = pluginEntries.length;
|
||
console.log(`\nResolving plugin docs from ${entriesCount} repositories …`);
|
||
for (var i = 0; i < entriesCount; i++) {
|
||
const pluginEntry = pluginEntries[i];
|
||
const { title, repo, version } = pluginEntry;
|
||
console.log(`\n${COLOR_BLUE}${repo}${COLOR_RESET} | ${title}`);
|
||
console.log(`Fetching docs from release "${version}" …`);
|
||
try {
|
||
const docsMdxFiles = await fetchPluginDocs({ repo, tag: version });
|
||
const mdxFilesByComponent = docsMdxFiles.reduce((acc, mdxFile) => {
|
||
const componentType = mdxFile.filePath.split("/")[1];
|
||
if (!acc[componentType]) acc[componentType] = [];
|
||
acc[componentType].push(mdxFile);
|
||
return acc;
|
||
}, {});
|
||
console.log(`${COLOR_GREEN}Found valid docs:${COLOR_RESET}`);
|
||
Object.keys(mdxFilesByComponent).forEach((component) => {
|
||
const componentFiles = mdxFilesByComponent[component];
|
||
console.log(` ${component}`);
|
||
componentFiles.forEach(({ filePath }) => {
|
||
const pathFromComponent = filePath.split("/").slice(2).join("/");
|
||
console.log(` ├── ${pathFromComponent}`);
|
||
});
|
||
});
|
||
} catch (err) {
|
||
console.log(`${COLOR_RED}${err}${COLOR_RESET}`);
|
||
failureMessages.push(`\n${COLOR_RED}× ${repo}: ${COLOR_RESET}${err}`);
|
||
}
|
||
}
|
||
|
||
if (failureMessages.length === 0) {
|
||
console.log(
|
||
`\n---\n\n${COLOR_GREEN}Summary: Successfully resolved all plugin docs.`
|
||
);
|
||
pluginEntries.forEach((e) =>
|
||
console.log(`${COLOR_GREEN}✓ ${e.repo}${COLOR_RESET}`)
|
||
);
|
||
console.log("");
|
||
} else {
|
||
console.log(
|
||
`\n---\n\n${COLOR_RED}Summary: Failed to fetch docs for ${failureMessages.length} plugin(s):`
|
||
);
|
||
failureMessages.forEach((err) => console.log(err));
|
||
console.log("");
|
||
process.exit(1);
|
||
}
|
||
}
|
||
|
||
checkPluginDocs();
|