You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#!/usr/bin/env node
var proc = require('child_process') var os = require('os') var path = require('path')
if (!buildFromSource()) { proc.exec('node-gyp-build-test', function (err) { if (err) preinstall() }) } else { preinstall() }
function buildFromSource () { if (!process.env.npm_config_argv) return false
try { return JSON.parse(process.env.npm_config_argv).cooked.indexOf('--build-from-source') !== -1 } catch (_) { return false } }
function build () { var args = [ os.platform() === 'win32' ? 'node-gyp.cmd' : 'node-gyp', 'rebuild' ]
try { args = [ process.execPath, path.join(require.resolve('node-gyp/package.json'), '..', require('node-gyp/package.json').bin['node-gyp']), 'rebuild' ] } catch (_) {}
proc.spawn(args[0], args.slice(1), {stdio: 'inherit'}).on('exit', function (code) { if (code || !process.argv[3]) process.exit(code) exec(process.argv[3]).on('exit', function (code) { process.exit(code) }) }) }
function preinstall () { if (!process.argv[2]) return build() exec(process.argv[2]).on('exit', function (code) { if (code) process.exit(code) build() }) }
function exec (cmd) { if (process.platform !== 'win32') { var shell = os.platform() === 'android' ? 'sh' : '/bin/sh' return proc.spawn(shell, ['-c', cmd], { stdio: 'inherit' }) }
return proc.spawn(process.env.comspec || 'cmd.exe', ['/s', '/c', '"' + cmd + '"'], { windowsVerbatimArguments: true, stdio: 'inherit' }) }
|