You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
890 B
JavaScript
43 lines
890 B
JavaScript
6 years ago
|
module.exports = isexe
|
||
|
isexe.sync = sync
|
||
|
|
||
|
var fs = require('fs')
|
||
|
|
||
|
function checkPathExt (path, options) {
|
||
|
var pathext = options.pathExt !== undefined ?
|
||
|
options.pathExt : process.env.PATHEXT
|
||
|
|
||
|
if (!pathext) {
|
||
|
return true
|
||
|
}
|
||
|
|
||
|
pathext = pathext.split(';')
|
||
|
if (pathext.indexOf('') !== -1) {
|
||
|
return true
|
||
|
}
|
||
|
for (var i = 0; i < pathext.length; i++) {
|
||
|
var p = pathext[i].toLowerCase()
|
||
|
if (p && path.substr(-p.length).toLowerCase() === p) {
|
||
|
return true
|
||
|
}
|
||
|
}
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
function checkStat (stat, path, options) {
|
||
|
if (!stat.isSymbolicLink() && !stat.isFile()) {
|
||
|
return false
|
||
|
}
|
||
|
return checkPathExt(path, options)
|
||
|
}
|
||
|
|
||
|
function isexe (path, options, cb) {
|
||
|
fs.stat(path, function (er, stat) {
|
||
|
cb(er, er ? false : checkStat(stat, path, options))
|
||
|
})
|
||
|
}
|
||
|
|
||
|
function sync (path, options) {
|
||
|
return checkStat(fs.statSync(path), path, options)
|
||
|
}
|