Spaces:
Sleeping
Sleeping
| #!/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)) | |
| } | |