66 lines
1.2 KiB
JavaScript
66 lines
1.2 KiB
JavaScript
'use strict';
|
|
|
|
const path = require('node:path');
|
|
|
|
|
|
const nameWindows = 'windows';
|
|
const platformAndArch = `${process.platform}-${process.arch}`;
|
|
|
|
const platformNames = {
|
|
'win32-x64': nameWindows,
|
|
'linux-x64': 'linux',
|
|
'darwin-x64': 'osx',
|
|
'linux-arm64': 'aarch64',
|
|
};
|
|
|
|
const platformName = platformNames[platformAndArch] || platformAndArch;
|
|
|
|
const isWindows = platformName === nameWindows;
|
|
|
|
|
|
const getPaths = (dir) => {
|
|
dir = dir.replace(/\\/g, '/');
|
|
|
|
const bin = `${dir}/bin-${platformName}`;
|
|
const include = `${dir}/include`;
|
|
|
|
if (isWindows) {
|
|
process.env.path = `${bin};${process.env.path ? `${process.env.path}` : ''}`;
|
|
}
|
|
|
|
return { bin, include };
|
|
};
|
|
|
|
|
|
const getBin = () => {
|
|
return `bin-${platformName}`;
|
|
};
|
|
|
|
const getPlatform = () => {
|
|
return platformName;
|
|
};
|
|
|
|
const getInclude = () => {
|
|
let napi = null;
|
|
try {
|
|
napi = require('node-addon-api');
|
|
} catch (ex) {
|
|
// do nothing
|
|
}
|
|
|
|
const rootPath = path.resolve(`${__dirname}/..`).replace(/\\/g, '/');
|
|
const napiInclude = napi ? napi.include_dir.replace(/\\/g, '/') : '';
|
|
const thisInclude = `${rootPath}/include`;
|
|
const includePath = `${napiInclude} ${thisInclude}`;
|
|
|
|
return includePath;
|
|
};
|
|
|
|
|
|
module.exports = {
|
|
getPaths,
|
|
getBin,
|
|
getPlatform,
|
|
getInclude,
|
|
};
|