mirror of
				https://github.com/actions/setup-node.git
				synced 2025-11-03 20:40:28 -05:00 
			
		
		
		
	
		
			
	
	
		
			58 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			58 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								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
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 |