@@ -5,6 +5,24 @@ var path = require("path");
55var fs = require("fs");
66
77var ocamlSrcDir = path.join(__dirname, "..", "ocaml");
8+ var ocamlVersionFilePath = path.join(ocamlSrcDir, "VERSION");
9+
10+ /**
11+ * Ensures the ocaml folder exists at the root of the project, either from the submodule,
12+ * or by extracting the vendor/ocaml.tar.gz there
13+ */
14+ function ensureOCamlExistsSync() {
15+ if (!fs.existsSync(ocamlSrcDir)) {
16+ fs.mkdirSync(ocamlSrcDir);
17+ }
18+ if (!fs.existsSync(ocamlVersionFilePath)) {
19+ cp.execSync(`tar xzvf ../vendor/ocaml.tar.gz`, {
20+ cwd: ocamlSrcDir,
21+ stdio: [0, 1, 2]
22+ });
23+ }
24+ }
25+
826/**
927 * @type {string}
1028 */
@@ -19,16 +37,10 @@ function getVersionPrefix() {
1937 return cached;
2038 }
2139
22- var file = path.join(__dirname, "..", "ocaml", "VERSION");
23- if (!fs.existsSync(file)) {
24- cp.execSync(`tar xzvf ../vendor/ocaml.tar.gz`, {
25- cwd: ocamlSrcDir,
26- stdio: [0, 1, 2]
27- });
28- }
40+ ensureOCamlExistsSync();
2941
30- console.log(`${file } is used in version detection`);
31- var version = fs.readFileSync(file , "ascii");
42+ console.log(`${ocamlVersionFilePath } is used in version detection`);
43+ var version = fs.readFileSync(ocamlVersionFilePath , "ascii");
3244 cached = version.substr(0, version.indexOf("+"));
3345 return cached;
3446}
@@ -39,15 +51,7 @@ exports.getVersionPrefix = getVersionPrefix;
3951 * @param {boolean} config
4052 */
4153function build(config) {
42- if (!fs.existsSync(ocamlSrcDir)) {
43- fs.mkdirSync(ocamlSrcDir);
44- }
45- if (!fs.existsSync(path.join(ocamlSrcDir, "VERSION"))) {
46- cp.execSync(`tar xzvf ../vendor/ocaml.tar.gz`, {
47- cwd: ocamlSrcDir,
48- stdio: [0, 1, 2]
49- });
50- }
54+ ensureOCamlExistsSync();
5155
5256 var prefix = path.normalize(
5357 path.join(__dirname, "..", "native", getVersionPrefix())
0 commit comments