forked from rescript-lang/rescript
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcheckUnused.js
63 lines (57 loc) · 1.33 KB
/
checkUnused.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
#!/usr/bin/env node
//@ts-check
var cp = require("child_process");
var path = require("path");
var fs = require("fs");
var opt = path.join(__dirname, "..", "native", "4.06.1", "bin", "ocamlopt.opt");
// TOOD: share with ninja.js
// check compiler code base
var sourceDirs = [
"stubs",
"ext",
"common",
"js_parser",
"syntax",
"depends",
"core",
"super_errors",
"outcome_printer",
"bsb",
"bsb_helper",
"ounit",
"ounit_tests",
"main",
];
var fileMap = new Map();
for (let dir of sourceDirs) {
let ydir = path.join("jscomp", dir);
let xdir = path.join(__dirname, "..", ydir);
for (let file of fs.readdirSync(xdir, "utf8")) {
let p = path.parse(file);
if (p.ext === ".ml" || p.ext === ".mli") {
fileMap.set(p.base, ydir);
}
}
}
/**
*
* @param {string} file
*/
function check(file) {
var output = cp.spawnSync(
`${opt} -c -opaque -linscan -I +compiler-libs -I 4.06.1 -w a+32 4.06.1/${file}.mli 4.06.1/${file}.ml`,
{ cwd: path.join(__dirname, "..", "lib"), encoding: "utf8", shell: true }
);
// debugger
var result = output.stderr.replace(/File "(.*)"/g, (file, p1) => {
let query = fileMap.get(p1);
if (!query) {
return `Unkonwn file ${p1}`;
}
return `File "${query}/${p1}"`;
});
console.log(result);
}
//
console.log(process.argv);
check(process.argv[2]);