UNPKG

cicp

Version:

cicp based npm

88 lines (72 loc) 2.12 kB
'use strict'; require('colors'); var debug = require('debug')('cnpm:origin'); var match = require('auto-correct'); var spawn = require('cross-spawn'); var fs = require('fs'); var path = require('path'); var config = require('./config'); var parseArgv = require('./parse_argv'); var program = parseArgv(); var args = program.rawArgs.slice(2); var CWD = process.cwd(); if (program.userconfig && !fs.existsSync(program.userconfig)) { // make sure userconfig exists // or it will throw: npm ERR! Error: default value must be string or number fs.writeFileSync(program.userconfig, 'email =\n'); } var nodeModulesDir = path.join(__dirname, 'node_modules'); var pangyp = path.join(nodeModulesDir, 'pangyp', 'bin', 'node-gyp.js'); args.unshift('--node-gyp=' + pangyp); args.unshift('--registry=' + program.registry); args.unshift('--cache=' + program.cache); args.unshift('--disturl=' + program.disturl); args.unshift('--userconfig=' + program.userconfig); var originalNpmBin = path.join(path.dirname(process.execPath), 'npm'); var npmBin = originalNpmBin; debug('%s %s', npmBin, args.join(' ')); var env = { NVM_NODEJS_ORG_MIRROR: config.mirrorsUrl + '/node', NVM_IOJS_ORG_MIRROR: config.mirrorsUrl + '/iojs', PHANTOMJS_CDNURL: config.mirrorsUrl + '/phantomjs', CHROMEDRIVER_CDNURL: config.mirrorsUrl + '/chromedriver', SELENIUM_CDNURL: config.mirrorsUrl + '/selenium', ELECTRON_MIRROR: config.mirrorsUrl + '/electron/', // set npm config: always-auth be true // NPM_CONFIG_ALWAYS_AUTH: 'true', }; for (var k in process.env) { env[k] = process.env[k]; } var npm = spawn(npmBin, args, { env: env, cwd: CWD, stdio: [ process.stdin, process.stdout, process.stderr, ] }); npm.on('exit', function (code, signal) { process.exit(code); }); /** * correct command * @return {[type]} [description] */ function correct(command) { var cmds = [ 'install', 'publish', 'adduser', 'author', 'config', 'unpublish', ]; for (var i = 0; i < cmds.length; i++) { if (match(command, cmds[i])) { return cmds[i]; } } return command; }