-
Notifications
You must be signed in to change notification settings - Fork 248
/
csv.js
35 lines (30 loc) · 1.03 KB
/
csv.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
const dependencyToIncidenceTransformer = require("./utl/dependency-to-incidence-transformer");
function renderHeader(pModules) {
return pModules.map((pModule) => `"${pModule.source}"`).join(",");
}
function mapIncidences(pIncidences) {
return pIncidences.map((pIncidence) => `"${pIncidence.incidence}"`).join(",");
}
function renderBody(pModules) {
return pModules.reduce(
(pAll, pModule) =>
`${pAll}\n"${pModule.source}",${mapIncidences(pModule.incidences)},""`,
""
);
}
function report(pModules) {
return `"",${renderHeader(pModules)},""${renderBody(pModules)}\n`;
}
/**
* Returns the results of a cruise in an 'incidence matrix'
*
* @param {import("../../types/cruise-result").ICruiseResult} pResults -
* the output of a dependency-cruise adhering to ../../schema/cruise-result.schema.json
* @returns {import("../../types/dependency-cruiser").IReporterOutput}
*/
module.exports = function csv(pResults) {
return {
output: report(dependencyToIncidenceTransformer(pResults.modules)),
exitCode: 0,
};
};