AK-21/Graphite-Industrial-Intelligence
0
1#!/usr/bin/env node2 3const path = require('path')4const fs = require('fs')5const napi = require('napi-build-utils')6 7const pkg = require(path.resolve('package.json'))8const rc = require('./rc')(pkg)9const log = require('./log')(rc, process.env)10const download = require('./download')11const asset = require('./asset')12const util = require('./util')13 14const prebuildClientVersion = require('./package.json').version15if (rc.version) {16 console.log(prebuildClientVersion)17 process.exit(0)18}19 20if (rc.path) process.chdir(rc.path)21 22if (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 28if (!fs.existsSync('package.json')) {29 log.error('setup', 'No package.json found. Aborting...')30 process.exit(1)31}32 33if (rc.help) {34 console.error(fs.readFileSync(path.join(__dirname, 'help.txt'), 'utf-8'))35 process.exit(0)36}37 38log.info('begin', 'Prebuild-install version', prebuildClientVersion)39 40const opts = Object.assign({}, rc, { pkg: pkg, log: log })41 42if (napi.isNapiRuntime(rc.runtime)) napi.logUnsupportedVersion(rc.target, log)43 44const origin = util.packageOrigin(process.env, pkg)45 46if (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 57const 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 67if (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}79 