@intuit/standardly
Version:
DIY framework for Standards Governance
50 lines (47 loc) • 1.48 kB
JavaScript
;
const ioutil = require("../lib/ioUtils");
const EvaluationResult = require("./EvaluationResult");
const ComplianceCalculator = require("./ComplianceCalculator");
const detailFields = "ruleID,error,detail\n";
/**
* Reports compliance
* @param {*} finalResults
* @param {*} resultsfile
*/
function reportCompliance(finalResults, resultsfile) {
return new Promise(resolve => {
let finalResultsString = "";
finalResults.forEach(result => {
finalResultsString += serializeEvaluationResults(result);
});
if (finalResults.length > 0) {
new ComplianceCalculator(finalResults).getComplianceSummary()
.then(statistics => {
ioutil.writeFile(resultsfile, statistics + "\n\n" + detailFields + finalResultsString)
.then((result)=>{
resolve(result);
});
});
} else {
return resolve(false);
}
});
}
/**
* Serializes rule evaulation results
* @param {*} result
*/
function serializeEvaluationResults(result) {
let str = "";
if(result instanceof EvaluationResult) {
str += result.getAsString() + "\n";
} else if (result instanceof Array) {
result.forEach(evaluationResult => {
str += evaluationResult.getAsString();
});
}
return str;
}
module.exports = {
reportCompliance : reportCompliance
};