86 lines
2.3 KiB
JavaScript
86 lines
2.3 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
const path = require('path');
|
|
const fs = require('fs');
|
|
const napi = require('napi-build-utils');
|
|
|
|
const pkg = require(path.resolve('package.json'));
|
|
const rc = require('./rc')(pkg);
|
|
const log = require('./log')(rc, process.env);
|
|
const download = require('./download');
|
|
const asset = require('./asset');
|
|
const util = require('./util');
|
|
|
|
const prebuildClientVersion = require('./package.json').version;
|
|
if (rc.version) {
|
|
console.log(prebuildClientVersion);
|
|
process.exit(0);
|
|
}
|
|
|
|
if (rc.path) process.chdir(rc.path);
|
|
|
|
if (rc.runtime === 'electron' && rc.target[0] === '4' && rc.abi === '64') {
|
|
log.error(
|
|
`Electron version ${rc.target} found - skipping prebuild-install work due to known ABI issue`
|
|
);
|
|
log.error(
|
|
'More information about this issue can be found at https://github.com/lgeiger/node-abi/issues/54'
|
|
);
|
|
process.exit(1);
|
|
}
|
|
|
|
if (!fs.existsSync('package.json')) {
|
|
log.error('setup', 'No package.json found. Aborting...');
|
|
process.exit(1);
|
|
}
|
|
|
|
if (rc.help) {
|
|
console.error(fs.readFileSync(path.join(__dirname, 'help.txt'), 'utf-8'));
|
|
process.exit(0);
|
|
}
|
|
|
|
log.info('begin', 'Prebuild-install version', prebuildClientVersion);
|
|
|
|
const opts = Object.assign({}, rc, { pkg: pkg, log: log });
|
|
|
|
if (napi.isNapiRuntime(rc.runtime)) napi.logUnsupportedVersion(rc.target, log);
|
|
|
|
const origin = util.packageOrigin(process.env, pkg);
|
|
|
|
if (opts.force) {
|
|
log.warn('install', 'prebuilt binaries enforced with --force!');
|
|
log.warn('install', 'prebuilt binaries may be out of date!');
|
|
} else if (origin && origin.length > 4 && origin.substr(0, 4) === 'git+') {
|
|
log.info('install', 'installing from git repository, skipping download.');
|
|
process.exit(1);
|
|
} else if (opts.buildFromSource) {
|
|
log.info(
|
|
'install',
|
|
'--build-from-source specified, not attempting download.'
|
|
);
|
|
process.exit(1);
|
|
}
|
|
|
|
const startDownload = function (downloadUrl) {
|
|
download(downloadUrl, opts, function (err) {
|
|
if (err) {
|
|
log.warn('install', err.message);
|
|
return process.exit(1);
|
|
}
|
|
log.info('install', 'Successfully installed prebuilt binary!');
|
|
});
|
|
};
|
|
|
|
if (opts.token) {
|
|
asset(opts, function (err, assetId) {
|
|
if (err) {
|
|
log.warn('install', err.message);
|
|
return process.exit(1);
|
|
}
|
|
|
|
startDownload(util.getAssetUrl(opts, assetId));
|
|
});
|
|
} else {
|
|
startDownload(util.getDownloadUrl(opts));
|
|
}
|