corrade-nucleus-nucleons – Blame information for rev 36

Subversion Repositories:
Rev:
Rev Author Line No. Line
36 office 1 var fs = require('fs')
2 var core
3 if (process.platform === 'win32' || global.TESTING_WINDOWS) {
4 core = require('./windows.js')
5 } else {
6 core = require('./mode.js')
7 }
8  
9 module.exports = isexe
10 isexe.sync = sync
11  
12 function isexe (path, options, cb) {
13 if (typeof options === 'function') {
14 cb = options
15 options = {}
16 }
17  
18 if (!cb) {
19 if (typeof Promise !== 'function') {
20 throw new TypeError('callback not provided')
21 }
22  
23 return new Promise(function (resolve, reject) {
24 isexe(path, options || {}, function (er, is) {
25 if (er) {
26 reject(er)
27 } else {
28 resolve(is)
29 }
30 })
31 })
32 }
33  
34 core(path, options || {}, function (er, is) {
35 // ignore EACCES because that just means we aren't allowed to run it
36 if (er) {
37 if (er.code === 'EACCES' || options && options.ignoreErrors) {
38 er = null
39 is = false
40 }
41 }
42 cb(er, is)
43 })
44 }
45  
46 function sync (path, options) {
47 // my kingdom for a filtered catch
48 try {
49 return core.sync(path, options || {})
50 } catch (er) {
51 if (options && options.ignoreErrors || er.code === 'EACCES') {
52 return false
53 } else {
54 throw er
55 }
56 }
57 }