mirror of
				https://kkgithub.com/actions/setup-node.git
				synced 2025-11-04 04:31:55 +08:00 
			
		
		
		
	
		
			
	
	
		
			40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const cp = require('child_process');
							 | 
						||
| 
								 | 
							
								const parse = require('./lib/parse');
							 | 
						||
| 
								 | 
							
								const enoent = require('./lib/enoent');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function spawn(command, args, options) {
							 | 
						||
| 
								 | 
							
								    // Parse the arguments
							 | 
						||
| 
								 | 
							
								    const parsed = parse(command, args, options);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Spawn the child process
							 | 
						||
| 
								 | 
							
								    const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Hook into child process "exit" event to emit an error if the command
							 | 
						||
| 
								 | 
							
								    // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16
							 | 
						||
| 
								 | 
							
								    enoent.hookChildProcess(spawned, parsed);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return spawned;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function spawnSync(command, args, options) {
							 | 
						||
| 
								 | 
							
								    // Parse the arguments
							 | 
						||
| 
								 | 
							
								    const parsed = parse(command, args, options);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Spawn the child process
							 | 
						||
| 
								 | 
							
								    const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16
							 | 
						||
| 
								 | 
							
								    result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return result;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = spawn;
							 | 
						||
| 
								 | 
							
								module.exports.spawn = spawn;
							 | 
						||
| 
								 | 
							
								module.exports.sync = spawnSync;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports._parse = parse;
							 | 
						||
| 
								 | 
							
								module.exports._enoent = enoent;
							 |