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.
		
		
		
		
			
				
					58 lines
				
				1.2 KiB
			
		
		
			
		
	
	
					58 lines
				
				1.2 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								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
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 |