cloud-report
Version:
Collects and analyzes cloud resources
55 lines (54 loc) • 2.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const cpy = require("cpy");
const ejs = require("ejs");
function processReportData(reportData, includeOnlyIssues) {
for (const serviceName in reportData) {
for (const checkName in reportData[serviceName]) {
for (const regionName in reportData[serviceName][checkName].regions) {
if (regionName === "global") {
reportData[serviceName][checkName].isGlobal = true;
}
let regionDetails = reportData[serviceName][checkName].regions[regionName];
if (!regionDetails) {
continue;
}
if (includeOnlyIssues && regionDetails.length) {
regionDetails = regionDetails.filter((resourceDetails) => {
return resourceDetails.severity === "Warning" ||
resourceDetails.severity === "Failure";
});
reportData[serviceName][checkName].regions[regionName] = regionDetails;
}
if (regionDetails && regionDetails.length) {
reportData[serviceName][checkName].resourceName = regionDetails[0].resourceSummary.name;
}
}
if (reportData[serviceName][checkName].resourceName) {
reportData[serviceName].isUsed = true;
}
}
}
return reportData;
}
function copyEJSFiles() {
return cpy(["reporters/**/*.ejs"], "../dist", {
cwd: "src", parents: true,
});
}
async function generateHTML(reportData, options) {
options = options || { showIssuesOnly: false };
// await copyEJSFiles();
reportData = processReportData(reportData, options.showIssuesOnly);
return await new Promise((resolve, reject) => {
ejs.renderFile(__dirname + "/template.ejs", { reportData }, {}, function (err, html) {
if (err) {
reject(err);
}
else {
resolve(html);
}
});
});
}
exports.generateHTML = generateHTML;