@catladder/cli
Version:
Panter cli tool for cloud CI/CD and DevOps
31 lines (27 loc) • 1.22 kB
text/typescript
import { Result } from "ts-results-es";
import { join } from "path";
import { readFile } from "fs/promises";
import { SECURITY_AUDIT_FILE_NAME } from "./createSecurityAuditMergeRequest";
import type { SecurityEvaluation } from "./auditDocument";
import { evaluateDocument } from "./auditDocument";
export async function evaluateSecurityAudit({ path }: { path: string }) {
return (
await Result.wrapAsync(async () => {
const filePath = join(path, SECURITY_AUDIT_FILE_NAME);
const docData = await readFile(filePath);
const doc = docData.toString("utf-8");
return evaluateDocument(doc);
})
).mapErr((e) => `could not evaluate ${SECURITY_AUDIT_FILE_NAME}: ${e}`);
}
export function makeSecurityAuditOverview(evaluation: SecurityEvaluation) {
const ratingToEmo = (r: number) => (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`;
}