forked from rescript-lang/rescript
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcheckUnused.js
52 lines (48 loc) · 1.19 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
#!/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[p.base] = ydir
}
}
}
var output = cp.spawnSync(
`${opt} -c -opaque -linscan -I 4.06.1 -w a+32 4.06.1/whole_compiler.mli 4.06.1/whole_compiler.ml`,
{ cwd: path.join(__dirname, "..", "lib"), encoding: "utf8", shell: true }
);
// debugger
var result = output.stderr.replace(/File "(.*)"/g,(file,p1)=>{
let query = fileMap[p1]
if(!query){
return `Unkonwn file`
}
return `File "${query}/${p1}"`
})
console.log(result)