corrade-nucleus-nucleons – Blame information for rev 36
?pathlinks?
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 | } |