-
Notifications
You must be signed in to change notification settings - Fork 0
/
summarizeOutputDirectory
executable file
·59 lines (46 loc) · 1.6 KB
/
summarizeOutputDirectory
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/usr/bin/env node
const { readFileSync } = require('fs');
const { dirname, basename, join } = require('path');
const { sync: glob } = require('glob');
const _ = require('lodash');
const outputDir = join(__dirname, './output');
const calculationOutputDirectories = glob(
`${outputDir}/npmrds_measures_calculator_*`,
);
const calculationMetadataFiles = glob(
`${outputDir}/*/calculator_metadata.json`,
);
const completeCalculationDirectories = calculationMetadataFiles.map(
(calcMetaFile) => dirname(calcMetaFile),
);
const incompleteCalculationDirectories = _.difference(
calculationOutputDirectories,
completeCalculationDirectories,
);
if (incompleteCalculationDirectories.length > 0) {
console.error('===== Incomplete Calculation Directories =====');
incompleteCalculationDirectories.forEach((d) => console.error(' ', d));
console.error();
}
const cols = ['states', 'year', 'measures', 'timeBinSize', 'dirname'];
const calculationMetadata = _.sortBy(
calculationMetadataFiles.sort().reduce((acc, calcMetaFile) => {
const { calculatorSettings } = JSON.parse(
readFileSync(calcMetaFile).toString(),
);
calculatorSettings.dirname = basename(dirname(calcMetaFile));
const row = cols.reduce((acc, c) => {
acc[c] =
c === 'measures'
? `${calculatorSettings[c].join(',')}`
: calculatorSettings[c];
return acc;
}, {});
acc.push(row);
return acc;
}, []),
['states', 'year', 'measures'],
);
// console.log(JSON.stringify(calculationMetadata, null, 4));
console.log('===== Calculation Summaries ====');
console.table(calculationMetadata);