forked from arthurevans/doctools
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodules_list.js
126 lines (120 loc) · 4.73 KB
/
modules_list.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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/*
Purpose: take an text file generated from modules_list.sh and pull module name, version, dependencies, and/or license information for each NPM module included in said text file.
See https://wiki.appcelerator.org/x/PrHBAg for more details.
*/
var fs = require('fs');
var fileName = process.argv[2]; // should receive modules_list.txt
var option = process.argv[3]; // should receive which report to run ([module] name, version, dependencies, license)
//console.log(fileName);
console.log(option); // 'license'
var modules = fs.readFileSync(fileName).toString(); // get file will all modules
//console.log(modules);
var myArray = [];
var block = modules.split('###');
var blockArray = [];
for (var i = 0; i < block.length; i++) {
blockArray.push(block[i].split("\n"));
}
//console.log(blockArray);
var findings = "";
if (option == "name") {
findings += "Report on module names\n\n";
} else if (option == "version") {
findings += "Report on module versions\n\n";
} else if (option == "dependencies") {
findings += "Report on module dependencies\n\n";
} else if (option == "license") {
console.log(option);
findings += "Report on module license\n\n";
} else {
console.log("Invalid report option. Please re-run with the option of name, version, dependencies, or license.");
process.exit(0);
}
for (i in blockArray) {
//var temp = [];
for (j in blockArray[i]) {
switch (option) {
case "name":
if (blockArray[i][j].indexOf("{ name:") > -1) {
preString = "{ name: '";
searchString = "',";
var preIndex = blockArray[i][j].indexOf(preString);
var searchIndex = preIndex + blockArray[i][j].substring(preIndex).indexOf(searchString);
var moduleName = blockArray[i][j].substr(preIndex + 9,searchIndex - 9);
findings += moduleName + "\n";
}
break;
case "version":
if (blockArray[i][j].indexOf("{ name:") > -1) {
preString = "{ name: '";
searchString = "',";
var preIndex = blockArray[i][j].indexOf(preString);
var searchIndex = preIndex + blockArray[i][j].substring(preIndex).indexOf(searchString);
var moduleName = blockArray[i][j].substr(preIndex + 9,searchIndex - 9);
}
if (blockArray[i][j].indexOf(" 'dist-tags': { latest: '") > -1) {
preString = " 'dist-tags': { latest: '";
searchString = "' },";
var preIndex = blockArray[i][j].indexOf(preString);
var searchIndex = preIndex + blockArray[i][j].substring(preIndex).indexOf(searchString);
var version = blockArray[i][j].substr(preIndex + 26,searchIndex - 26);
findings += moduleName + "::" + version + "\n";
}
break;
case "dependencies":
if (blockArray[i][j].indexOf("dependencies: {") > -1) {
preString = "dependencies: {";
searchString = "},";
var preIndex = blockArray[i][j].indexOf(preString);
var searchIndex = preIndex + blockArray[i][j].substring(preIndex).indexOf(searchString);
var dependencies = blockArray[i][j].substr(preIndex + 16,searchIndex - 20);
if (dependencies.length <= 0) {
//console.log("No dependencies");
} else {
//console.log(moduleName + "'s dependencies: " + dependencies);
//findings.push(moduleName + "'s dependencies: " + dependencies);
//temp.push(moduleName + "'s dependencies: " + dependencies);
findings += dependencies + "\n";
}
} // ** what happens if a dependency isn't defined?? currently, nothing is printed
break;
case "license":
if (blockArray[i][j].indexOf("{ name:") > -1) {
preString = "{ name: '";
searchString = "',";
var preIndex = blockArray[i][j].indexOf(preString);
var searchIndex = preIndex + blockArray[i][j].substring(preIndex).indexOf(searchString);
var moduleName = blockArray[i][j].substr(preIndex + 9,searchIndex - 9);
}
if (blockArray[i][j].indexOf(" license: '") > -1) {
preString = " license: '";
searchString = "',";
var preIndex = blockArray[i][j].indexOf(preString);
var searchIndex = preIndex + blockArray[i][j].substring(preIndex).indexOf(searchString);
var license = blockArray[i][j].substr(preIndex + 12,searchIndex - 12);
if (license.length <= 0) {
//console.log("No license");
findings += moduleName + "::has no license info\n";
} else {
findings += moduleName + "::" + license + "\n";
}
}
break;
default:
console.log("Invalid report option. Please re-run with the option of name, version, dependencies, or license.");
process.exit(0);
break;
}
}
}
console.log(findings);
// write out findings
if (findings.length <= 0) {
if (option == "dependencies") {
console.log("No dependencies found for this list.");
} else if (option == "license") {
console.log("No license found for this list.");
}
} else {
fs.writeFileSync("./module_list-" + option + ".txt", findings);
}