mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
//
 | 
						|
// used by async
 | 
						|
// SOURCE: https://github.com/isaacs/isexe
 | 
						|
//
 | 
						|
 | 
						|
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
 | 
						|
    }
 | 
						|
  }
 | 
						|
} |