time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

index.js (1192B)


      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 }