@catladder/cli
Version:
Panter cli tool for cloud CI/CD and DevOps
28 lines • 1.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeSecurityAuditOverview = exports.evaluateSecurityAudit = void 0;
const ts_results_es_1 = require("ts-results-es");
const path_1 = require("path");
const promises_1 = require("fs/promises");
const createSecurityAuditMergeRequest_1 = require("./createSecurityAuditMergeRequest");
const auditDocument_1 = require("./auditDocument");
async function evaluateSecurityAudit({ path }) {
return (await ts_results_es_1.Result.wrapAsync(async () => {
const filePath = (0, path_1.join)(path, createSecurityAuditMergeRequest_1.SECURITY_AUDIT_FILE_NAME);
const docData = await (0, promises_1.readFile)(filePath);
const doc = docData.toString("utf-8");
return (0, auditDocument_1.evaluateDocument)(doc);
})).mapErr((e) => `could not evaluate ${createSecurityAuditMergeRequest_1.SECURITY_AUDIT_FILE_NAME}: ${e}`);
}
exports.evaluateSecurityAudit = evaluateSecurityAudit;
function makeSecurityAuditOverview(evaluation) {
const ratingToEmo = (r) => (r < 33 ? "🟥" : r < 66 ? "🟨" : "🟩");
return `Project security posture overview:
🧐 Total topics: ${evaluation.score.totalTopics}
🔒 Secured topics: ${evaluation.score.securedTopics}
📢 Answered topics: ${evaluation.score.answeredTopics}
❔ Unknown topics: ${evaluation.score.unknownTopics}
📊 Rating: ${ratingToEmo(evaluation.score.rating)} ${evaluation.score.rating}/100`;
}
exports.makeSecurityAuditOverview = makeSecurityAuditOverview;
//# sourceMappingURL=evaluateSecurityAudit.js.map