1 |
3a515b92
|
cagy
|
module.exports = isexe
|
2 |
|
|
isexe.sync = sync
|
3 |
|
|
|
4 |
|
|
var fs = require('fs')
|
5 |
|
|
|
6 |
|
|
function checkPathExt (path, options) {
|
7 |
|
|
var pathext = options.pathExt !== undefined ?
|
8 |
|
|
options.pathExt : process.env.PATHEXT
|
9 |
|
|
|
10 |
|
|
if (!pathext) {
|
11 |
|
|
return true
|
12 |
|
|
}
|
13 |
|
|
|
14 |
|
|
pathext = pathext.split(';')
|
15 |
|
|
if (pathext.indexOf('') !== -1) {
|
16 |
|
|
return true
|
17 |
|
|
}
|
18 |
|
|
for (var i = 0; i < pathext.length; i++) {
|
19 |
|
|
var p = pathext[i].toLowerCase()
|
20 |
|
|
if (p && path.substr(-p.length).toLowerCase() === p) {
|
21 |
|
|
return true
|
22 |
|
|
}
|
23 |
|
|
}
|
24 |
|
|
return false
|
25 |
|
|
}
|
26 |
|
|
|
27 |
|
|
function checkStat (stat, path, options) {
|
28 |
|
|
if (!stat.isSymbolicLink() && !stat.isFile()) {
|
29 |
|
|
return false
|
30 |
|
|
}
|
31 |
|
|
return checkPathExt(path, options)
|
32 |
|
|
}
|
33 |
|
|
|
34 |
|
|
function isexe (path, options, cb) {
|
35 |
|
|
fs.stat(path, function (er, stat) {
|
36 |
|
|
cb(er, er ? false : checkStat(stat, path, options))
|
37 |
|
|
})
|
38 |
|
|
}
|
39 |
|
|
|
40 |
|
|
function sync (path, options) {
|
41 |
|
|
return checkStat(fs.statSync(path), path, options)
|
42 |
|
|
}
|