You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							57 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
	
	
							57 lines
						
					
					
						
							1.2 KiB
						
					
					
				var fs = require('fs') | 
						|
var core | 
						|
if (process.platform === 'win32' || global.TESTING_WINDOWS) { | 
						|
  core = require('./windows.js') | 
						|
} else { | 
						|
  core = require('./mode.js') | 
						|
} | 
						|
 | 
						|
module.exports = isexe | 
						|
isexe.sync = sync | 
						|
 | 
						|
function isexe (path, options, cb) { | 
						|
  if (typeof options === 'function') { | 
						|
    cb = options | 
						|
    options = {} | 
						|
  } | 
						|
 | 
						|
  if (!cb) { | 
						|
    if (typeof Promise !== 'function') { | 
						|
      throw new TypeError('callback not provided') | 
						|
    } | 
						|
 | 
						|
    return new Promise(function (resolve, reject) { | 
						|
      isexe(path, options || {}, function (er, is) { | 
						|
        if (er) { | 
						|
          reject(er) | 
						|
        } else { | 
						|
          resolve(is) | 
						|
        } | 
						|
      }) | 
						|
    }) | 
						|
  } | 
						|
 | 
						|
  core(path, options || {}, function (er, is) { | 
						|
    // ignore EACCES because that just means we aren't allowed to run it | 
						|
    if (er) { | 
						|
      if (er.code === 'EACCES' || options && options.ignoreErrors) { | 
						|
        er = null | 
						|
        is = false | 
						|
      } | 
						|
    } | 
						|
    cb(er, is) | 
						|
  }) | 
						|
} | 
						|
 | 
						|
function sync (path, options) { | 
						|
  // my kingdom for a filtered catch | 
						|
  try { | 
						|
    return core.sync(path, options || {}) | 
						|
  } catch (er) { | 
						|
    if (options && options.ignoreErrors || er.code === 'EACCES') { | 
						|
      return false | 
						|
    } else { | 
						|
      throw er | 
						|
    } | 
						|
  } | 
						|
}
 | 
						|
 |