#!/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) })