| #!/usr/bin/env node |
| ;(function () { // wrapper in case we're in module_context mode |
| |
| // windows: running "npm blah" in this folder will invoke WSH, not node. |
| /*global WScript*/ |
| if (typeof WScript !== 'undefined') { |
| WScript.echo( |
| 'npm does not work when run\n' + |
| 'with the Windows Scripting Host\n\n' + |
| "'cd' to a different directory,\n" + |
| "or type 'npm.cmd <args>',\n" + |
| "or type 'node npm <args>'." |
| ) |
| WScript.quit(1) |
| return |
| } |
| |
| process.title = 'npm' |
| |
| var log = require('npmlog') |
| log.pause() // will be unpaused when config is loaded. |
| |
| log.info('it worked if it ends with', 'ok') |
| |
| var path = require('path') |
| var npm = require('../lib/npm.js') |
| var npmconf = require('../lib/config/core.js') |
| var errorHandler = require('../lib/utils/error-handler.js') |
| |
| var configDefs = npmconf.defs |
| var shorthands = configDefs.shorthands |
| var types = configDefs.types |
| var nopt = require('nopt') |
| |
| // if npm is called as "npmg" or "npm_g", then |
| // run in global mode. |
| if (path.basename(process.argv[1]).slice(-1) === 'g') { |
| process.argv.splice(1, 1, 'npm', '-g') |
| } |
| |
| log.verbose('cli', process.argv) |
| |
| var conf = nopt(types, shorthands) |
| npm.argv = conf.argv.remain |
| if (npm.deref(npm.argv[0])) npm.command = npm.argv.shift() |
| else conf.usage = true |
| |
| if (conf.version) { |
| console.log(npm.version) |
| return |
| } |
| |
| if (conf.versions) { |
| npm.command = 'version' |
| conf.usage = false |
| npm.argv = [] |
| } |
| |
| log.info('using', 'npm@%s', npm.version) |
| log.info('using', 'node@%s', process.version) |
| |
| process.on('uncaughtException', errorHandler) |
| |
| if (conf.usage && npm.command !== 'help') { |
| npm.argv.unshift(npm.command) |
| npm.command = 'help' |
| } |
| |
| // now actually fire up npm and run the command. |
| // this is how to use npm programmatically: |
| conf._exit = true |
| npm.load(conf, function (er) { |
| if (er) return errorHandler(er) |
| npm.commands[npm.command](npm.argv, errorHandler) |
| }) |
| })() |