41 lines
1.0 KiB
JavaScript
41 lines
1.0 KiB
JavaScript
"use strict"
|
|
|
|
var which = require('which')
|
|
var npmPath = require('npm-path')
|
|
|
|
module.exports = function(cmd, options, fn) {
|
|
if (options instanceof Function) fn = options, options = null
|
|
options = options || {}
|
|
options.cwd = options.cwd || process.cwd()
|
|
options.env = options.env || process.env
|
|
npmPath.get(options, function(err, newPath) {
|
|
if (err) return fn(err)
|
|
var oldPath = process.env[npmPath.PATH]
|
|
process.env[npmPath.PATH] = newPath
|
|
which(cmd, function(err, result) {
|
|
process.env[npmPath.PATH] = oldPath
|
|
fn(err, result)
|
|
})
|
|
})
|
|
}
|
|
|
|
module.exports.sync = function(cmd, options) {
|
|
options = options || {}
|
|
options.cwd = options.cwd || process.cwd()
|
|
options.env = options.env || process.env
|
|
var err = null
|
|
try {
|
|
var oldPath = process.env[npmPath.PATH]
|
|
var newPath = npmPath.getSync(options)
|
|
process.env[npmPath.PATH] = newPath
|
|
var result = which.sync(cmd)
|
|
return result
|
|
} catch(e) {
|
|
err = e
|
|
} finally {
|
|
process.env[npmPath.PATH] = oldPath
|
|
if (err) throw err
|
|
}
|
|
return result
|
|
}
|