const libc = require('detect-libc');
const getTarget = require('node-abi').getTarget;
const spawn = require('cross-spawn');
const npmRunPath = require('npm-run-path-compat');
const PREBUILD_TOKEN = process.env.PREBUILD_TOKEN;
const PUBLISH_BINARY = process.env.PUBLISH_BINARY || false;
function build({target, runtime, abi}) {
try {
abi && getTarget(target, runtime);
} catch (err) {
return Promise.resolve();
}
const args = ['--verbose', '-r', runtime, '-t', target];
if (libc.isNonGlibcLinux) {
process.env.LIBC = libc.family;
}
if (PUBLISH_BINARY) {
args.push('-u', PREBUILD_TOKEN);
}
return new Promise((resolve, reject) => {
const proc = spawn('prebuild', args, { env: npmRunPath.env() });
proc.stdout.pipe(process.stdout);
proc.stderr.pipe(process.stderr);
proc.on('exit', (code) => {
if (code) {
return reject(code);
}
resolve(null);
});
});
}
build({ runtime: 'node', target: process.versions.node, abi: false })
.catch(code => process.exit(code));