blob: 19dadc796374c08ee4909ae5021fa716a1cbb465 [file] [log] [blame]
let fs = require('fs');
let path = require('path');
let parts = [process.platform, process.arch];
if (process.platform === 'linux') {
const {MUSL, familySync} = require('detect-libc');
const family = familySync();
if (family === MUSL) {
parts.push('musl');
} else if (process.arch === 'arm') {
parts.push('gnueabihf');
} else {
parts.push('gnu');
}
} else if (process.platform === 'win32') {
parts.push('msvc');
}
let binary = process.platform === 'win32' ? 'lightningcss.exe' : 'lightningcss';
let pkgPath;
try {
pkgPath = path.dirname(require.resolve(`lightningcss-cli-${parts.join('-')}/package.json`));
} catch (err) {
pkgPath = path.join(__dirname, '..', 'target', 'release');
if (!fs.existsSync(path.join(pkgPath, binary))) {
pkgPath = path.join(__dirname, '..', 'target', 'debug');
}
}
try {
fs.linkSync(path.join(pkgPath, binary), path.join(__dirname, binary));
} catch (err) {
try {
fs.copyFileSync(path.join(pkgPath, binary), path.join(__dirname, binary));
} catch (err) {
console.error('Failed to move lightningcss-cli binary into place.');
process.exit(1);
}
}
if (process.platform === 'win32') {
try {
fs.unlinkSync(path.join(__dirname, 'lightningcss'));
} catch (err) { }
}