forked from rescript-lang/rescript
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprebuilt.js
executable file
·38 lines (31 loc) · 1.29 KB
/
prebuilt.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
#!/usr/bin/env node
// @ts-check
import assert from "node:assert";
import fs from "node:fs";
import packageJson from "rescript/package.json" with { type: "json" };
import semver from "semver";
import { compilerVersionFile } from "#dev/paths";
/**
* @param {semver.SemVer} bsVersion
* @param {semver.SemVer} version
*/
function verifyVersion(bsVersion, version) {
const { major, minor } = bsVersion;
const { major: specifiedMajor, minor: specifiedMinor } = version;
console.log(
`Version check: package.json: ${specifiedMajor}.${specifiedMinor} vs ABI: ${major}.${minor}`,
);
return major === specifiedMajor && minor === specifiedMinor;
}
const bsVersionPattern = /let version = "(?<version>.*)"/m;
const bsVersionFileContent = fs.readFileSync(compilerVersionFile, "utf-8");
const bsVersionMatch = bsVersionFileContent.match(bsVersionPattern)?.groups;
assert.ok(bsVersionMatch, "Failed to parse the compiler version file");
const bsVersion = semver.parse(bsVersionMatch.version);
assert.ok(bsVersion, "Failed to parse the compiler version file");
const packageVersion = semver.parse(packageJson.version);
assert.ok(packageVersion, "Failed to parse the version of the package.json");
assert.ok(
verifyVersion(bsVersion, packageVersion),
`Bump the compiler version in ${compilerVersionFile}`,
);