123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #!/usr/bin/env node
- var path = require('path')
- var fs = require('fs')
- var resolve = require('resolve')
- var info = require('../lib/log')
- var NODE_PATH = process.env.NODE_PATH
- var requireCliAndRun = function (karmaPath) {
- if (process.argv.indexOf('--which') !== -1) {
- info.log(karmaPath)
- } else {
- require(path.join(karmaPath, 'lib', 'cli')).run()
- }
- }
- resolve('karma', {basedir: process.cwd()}, function (err, pathToKarma) {
- // There is a local version, let's use it.
- if (!err) {
- return requireCliAndRun(pathToKarma.replace(/(\/|\\)lib(\/|\\)index\.js/, ''))
- }
- // We can't load a global one, since NODE_PATH is not defined.
- if (!NODE_PATH) {
- // Let's try a siblink to karma-cli, that is a global module with NVM.
- var siblinkKarma = path.normalize(path.join(__dirname, '..', '..', 'karma'))
- if (fs.existsSync(siblinkKarma)) {
- return requireCliAndRun(siblinkKarma)
- }
- info.fatal('Cannot find local Karma!\n' +
- ' Please install Karma by `npm install karma --save-dev`.\n' +
- ' If you wanna use a global instance, please set NODE_PATH env variable.\n', 1)
- return
- }
- // Let's try global paths.
- var globalPaths = NODE_PATH.split(path.delimiter)
- var globalKarma
- while (globalPaths.length) {
- globalKarma = path.normalize(path.join(globalPaths.shift(), 'karma'))
- if (fs.existsSync(globalKarma)) {
- return requireCliAndRun(globalKarma)
- }
- }
- info.fatal('Cannot find local Karma!\n' +
- ' Please install karma by `npm install karma --save-dev`.\n', 1)
- })
|