Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-go / node_modules / isexe / windows.js
1 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 }