| [81bc7da] | 1 | #!/usr/bin/env node
|
|---|
| 2 |
|
|---|
| 3 | const path = require('path')
|
|---|
| 4 | const fs = require('fs')
|
|---|
| 5 | const napi = require('napi-build-utils')
|
|---|
| 6 |
|
|---|
| 7 | const pkg = require(path.resolve('package.json'))
|
|---|
| 8 | const rc = require('./rc')(pkg)
|
|---|
| 9 | const log = require('./log')(rc, process.env)
|
|---|
| 10 | const download = require('./download')
|
|---|
| 11 | const asset = require('./asset')
|
|---|
| 12 | const util = require('./util')
|
|---|
| 13 |
|
|---|
| 14 | const prebuildClientVersion = require('./package.json').version
|
|---|
| 15 | if (rc.version) {
|
|---|
| 16 | console.log(prebuildClientVersion)
|
|---|
| 17 | process.exit(0)
|
|---|
| 18 | }
|
|---|
| 19 |
|
|---|
| 20 | if (rc.path) process.chdir(rc.path)
|
|---|
| 21 |
|
|---|
| 22 | if (rc.runtime === 'electron' && rc.target[0] === '4' && rc.abi === '64') {
|
|---|
| 23 | log.error(`Electron version ${rc.target} found - skipping prebuild-install work due to known ABI issue`)
|
|---|
| 24 | log.error('More information about this issue can be found at https://github.com/lgeiger/node-abi/issues/54')
|
|---|
| 25 | process.exit(1)
|
|---|
| 26 | }
|
|---|
| 27 |
|
|---|
| 28 | if (!fs.existsSync('package.json')) {
|
|---|
| 29 | log.error('setup', 'No package.json found. Aborting...')
|
|---|
| 30 | process.exit(1)
|
|---|
| 31 | }
|
|---|
| 32 |
|
|---|
| 33 | if (rc.help) {
|
|---|
| 34 | console.error(fs.readFileSync(path.join(__dirname, 'help.txt'), 'utf-8'))
|
|---|
| 35 | process.exit(0)
|
|---|
| 36 | }
|
|---|
| 37 |
|
|---|
| 38 | log.info('begin', 'Prebuild-install version', prebuildClientVersion)
|
|---|
| 39 |
|
|---|
| 40 | const opts = Object.assign({}, rc, { pkg: pkg, log: log })
|
|---|
| 41 |
|
|---|
| 42 | if (napi.isNapiRuntime(rc.runtime)) napi.logUnsupportedVersion(rc.target, log)
|
|---|
| 43 |
|
|---|
| 44 | const origin = util.packageOrigin(process.env, pkg)
|
|---|
| 45 |
|
|---|
| 46 | if (opts.force) {
|
|---|
| 47 | log.warn('install', 'prebuilt binaries enforced with --force!')
|
|---|
| 48 | log.warn('install', 'prebuilt binaries may be out of date!')
|
|---|
| 49 | } else if (origin && origin.length > 4 && origin.substr(0, 4) === 'git+') {
|
|---|
| 50 | log.info('install', 'installing from git repository, skipping download.')
|
|---|
| 51 | process.exit(1)
|
|---|
| 52 | } else if (opts.buildFromSource) {
|
|---|
| 53 | log.info('install', '--build-from-source specified, not attempting download.')
|
|---|
| 54 | process.exit(1)
|
|---|
| 55 | }
|
|---|
| 56 |
|
|---|
| 57 | const startDownload = function (downloadUrl) {
|
|---|
| 58 | download(downloadUrl, opts, function (err) {
|
|---|
| 59 | if (err) {
|
|---|
| 60 | log.warn('install', err.message)
|
|---|
| 61 | return process.exit(1)
|
|---|
| 62 | }
|
|---|
| 63 | log.info('install', 'Successfully installed prebuilt binary!')
|
|---|
| 64 | })
|
|---|
| 65 | }
|
|---|
| 66 |
|
|---|
| 67 | if (opts.token) {
|
|---|
| 68 | asset(opts, function (err, assetId) {
|
|---|
| 69 | if (err) {
|
|---|
| 70 | log.warn('install', err.message)
|
|---|
| 71 | return process.exit(1)
|
|---|
| 72 | }
|
|---|
| 73 |
|
|---|
| 74 | startDownload(util.getAssetUrl(opts, assetId))
|
|---|
| 75 | })
|
|---|
| 76 | } else {
|
|---|
| 77 | startDownload(util.getDownloadUrl(opts))
|
|---|
| 78 | }
|
|---|