40 lines
		
	
	
		
			947 B
		
	
	
	
		
			JavaScript
		
	
	
		
		
			
		
	
	
			40 lines
		
	
	
		
			947 B
		
	
	
	
		
			JavaScript
		
	
	
|  | if (require.main !== module) { | ||
|  |   throw new Error('This file should not be required'); | ||
|  | } | ||
|  | 
 | ||
|  | var childProcess = require('child_process'); | ||
|  | var fs = require('fs'); | ||
|  | 
 | ||
|  | var paramFilePath = process.argv[2]; | ||
|  | 
 | ||
|  | var serializedParams = fs.readFileSync(paramFilePath, 'utf8'); | ||
|  | var params = JSON.parse(serializedParams); | ||
|  | 
 | ||
|  | var cmd = params.command; | ||
|  | var execOptions = params.execOptions; | ||
|  | var pipe = params.pipe; | ||
|  | var stdoutFile = params.stdoutFile; | ||
|  | var stderrFile = params.stderrFile; | ||
|  | 
 | ||
|  | var c = childProcess.exec(cmd, execOptions, function (err) { | ||
|  |   if (!err) { | ||
|  |     process.exitCode = 0; | ||
|  |   } else if (err.code === undefined) { | ||
|  |     process.exitCode = 1; | ||
|  |   } else { | ||
|  |     process.exitCode = err.code; | ||
|  |   } | ||
|  | }); | ||
|  | 
 | ||
|  | var stdoutStream = fs.createWriteStream(stdoutFile); | ||
|  | var stderrStream = fs.createWriteStream(stderrFile); | ||
|  | 
 | ||
|  | c.stdout.pipe(stdoutStream); | ||
|  | c.stderr.pipe(stderrStream); | ||
|  | c.stdout.pipe(process.stdout); | ||
|  | c.stderr.pipe(process.stderr); | ||
|  | 
 | ||
|  | if (pipe) { | ||
|  |   c.stdin.end(pipe); | ||
|  | } |