59 lines
1.4 KiB
Plaintext
59 lines
1.4 KiB
Plaintext
|
const { platform, arch } = process;
|
||
|
const { execSync } = require("child_process");
|
||
|
|
||
|
function isMusl() {
|
||
|
let stderr;
|
||
|
try {
|
||
|
stderr = execSync("ldd --version", {
|
||
|
stdio: ['pipe', 'pipe', 'pipe']
|
||
|
});
|
||
|
} catch (err) {
|
||
|
stderr = err.stderr;
|
||
|
}
|
||
|
if (stderr.indexOf("musl") > -1) {
|
||
|
return true;
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
const PLATFORMS = {
|
||
|
win32: {
|
||
|
x64: "@biomejs/cli-win32-x64/biome.exe",
|
||
|
arm64: "@biomejs/cli-win32-arm64/biome.exe",
|
||
|
},
|
||
|
darwin: {
|
||
|
x64: "@biomejs/cli-darwin-x64/biome",
|
||
|
arm64: "@biomejs/cli-darwin-arm64/biome",
|
||
|
},
|
||
|
linux: {
|
||
|
x64: "@biomejs/cli-linux-x64/biome",
|
||
|
arm64: "@biomejs/cli-linux-arm64/biome",
|
||
|
},
|
||
|
"linux-musl": {
|
||
|
x64: "@biomejs/cli-linux-x64-musl/biome",
|
||
|
arm64: "@biomejs/cli-linux-arm64-musl/biome",
|
||
|
},
|
||
|
};
|
||
|
|
||
|
const binName =
|
||
|
platform === "linux" && isMusl()
|
||
|
? PLATFORMS?.["linux-musl"]?.[arch]
|
||
|
: PLATFORMS?.[platform]?.[arch];
|
||
|
|
||
|
if (binName) {
|
||
|
let binPath;
|
||
|
try {
|
||
|
binPath = require.resolve(binName);
|
||
|
} catch {
|
||
|
console.warn(
|
||
|
`The Biome CLI postinstall script failed to resolve the binary file "${binName}". Running Biome from the npm package will probably not work correctly.`
|
||
|
);
|
||
|
}
|
||
|
} else {
|
||
|
console.warn(
|
||
|
"The Biome CLI package doesn't ship with prebuilt binaries for your platform yet. " +
|
||
|
"You can still use the CLI by cloning the biomejs/biome repo from GitHub, " +
|
||
|
"and follow the instructions there to build the CLI for your platform."
|
||
|
);
|
||
|
}
|