@syntropysoft/praetorian
Version:
Praetorian CLI ā A universal multi-environment configuration validator for DevSecOps teams. Validate, compare, and secure YAML/ENV files with ease.
118 lines ⢠5.18 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.runAudit = runAudit;
const chalk_1 = __importDefault(require("chalk"));
const AuditEngine_1 = require("../../application/services/AuditEngine");
async function runAudit(options = {}) {
console.log(chalk_1.default.blue('\nš Running SyntropyLog Audit...\n'));
try {
// Determine audit types
const auditTypes = [];
if (options.security)
auditTypes.push('security');
if (options.compliance)
auditTypes.push('compliance');
if (options.performance)
auditTypes.push('performance');
// If no specific type, run all
if (auditTypes.length === 0) {
auditTypes.push('security', 'compliance', 'performance');
}
console.log(chalk_1.default.gray(`Audit types: ${auditTypes.join(', ')}`));
// Create audit engine
const auditEngine = new AuditEngine_1.AuditEngine({
plugins: ['syntropylog'],
types: auditTypes
});
// Run audit
const result = await auditEngine.audit({
config: {},
environment: 'development',
project: 'syntropylog-project',
timestamp: new Date(),
metadata: {}
});
// Display results
displayAuditResults(result, options);
}
catch (error) {
console.error(chalk_1.default.red('\nā Audit failed:'));
console.error(error instanceof Error ? error.message : error);
process.exit(1);
}
}
function displayAuditResults(result, options) {
console.log(chalk_1.default.blue('š Audit Results:\n'));
// Score and Grade
const score = result.summary?.score || 0;
const grade = result.summary?.grade || 'F';
console.log(chalk_1.default.blue('š Overall Score:'));
console.log(` ⢠Score: ${score}/100`);
console.log(` ⢠Grade: ${getGradeColor(grade)}${grade}${chalk_1.default.reset()}`);
console.log('');
// Issues breakdown
console.log(chalk_1.default.blue('š Issues Breakdown:'));
console.log(` ⢠Critical Issues: ${chalk_1.default.red(result.summary?.criticalIssues || 0)}`);
console.log(` ⢠Security Issues: ${chalk_1.default.yellow(result.summary?.securityIssues || 0)}`);
console.log(` ⢠Compliance Issues: ${chalk_1.default.blue(result.summary?.complianceIssues || 0)}`);
console.log('');
// Detailed results
if (result.results && result.results.length > 0) {
console.log(chalk_1.default.blue('š Detailed Results:\n'));
result.results.forEach((validationResult, index) => {
const pluginName = validationResult.metadata?.plugin || `Check ${index + 1}`;
if (validationResult.success) {
console.log(chalk_1.default.green(`ā
${pluginName}`));
}
else {
console.log(chalk_1.default.red(`ā ${pluginName}`));
validationResult.errors.forEach((error) => {
console.log(chalk_1.default.red(` ⢠${error.message}`));
if (error.path) {
console.log(chalk_1.default.gray(` Path: ${error.path}`));
}
});
}
if (validationResult.warnings && validationResult.warnings.length > 0) {
validationResult.warnings.forEach((warning) => {
console.log(chalk_1.default.yellow(` ā ļø ${warning.message}`));
});
}
console.log('');
});
}
// Recommendations
if (result.summary?.recommendations && result.summary.recommendations.length > 0) {
console.log(chalk_1.default.blue('š” Recommendations:\n'));
result.summary.recommendations.forEach((rec, index) => {
console.log(chalk_1.default.cyan(` ${index + 1}. ${rec}`));
});
console.log('');
}
// Summary
console.log(chalk_1.default.blue('š Summary:'));
console.log(` ⢠Duration: ${result.duration || 0}ms`);
console.log(` ⢠Total Checks: ${result.totalChecks || 0}`);
console.log(` ⢠Passed: ${result.passedChecks || 0}`);
console.log(` ⢠Failed: ${result.failedChecks || 0}`);
console.log(` ⢠Warnings: ${result.warnings || 0}`);
// Exit code based on results
if (result.summary?.criticalIssues > 0 || result.summary?.securityIssues > 0) {
console.log(chalk_1.default.red('\nā ļø Critical or security issues found. Please review and fix.'));
process.exit(1);
}
}
function getGradeColor(grade) {
switch (grade) {
case 'A': return chalk_1.default.green('');
case 'B': return chalk_1.default.cyan('');
case 'C': return chalk_1.default.yellow('');
case 'D': return chalk_1.default.magenta('');
case 'F': return chalk_1.default.red('');
default: return chalk_1.default.white('');
}
}
//# sourceMappingURL=audit.js.map