| 
									
										
										
										
											2021-12-26 00:32:00 +00:00
										 |  |  | import { exec } from 'child_process'; | 
					
						
							| 
									
										
										
										
											2021-12-25 20:05:17 +00:00
										 |  |  | import CloudRunnerLogger from '../../cloud-runner/services/cloud-runner-logger'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export class RemoteClientSystem { | 
					
						
							|  |  |  |   public static async Run(command: string) { | 
					
						
							| 
									
										
										
										
											2021-12-26 00:32:00 +00:00
										 |  |  |     return await new Promise<string>((promise) => { | 
					
						
							| 
									
										
										
										
											2021-12-26 01:05:51 +00:00
										 |  |  |       let output = ''; | 
					
						
							| 
									
										
										
										
											2021-12-26 01:48:36 +00:00
										 |  |  |       const child = exec(command, (error, stdout, stderr) => { | 
					
						
							|  |  |  |         if (error) { | 
					
						
							|  |  |  |           CloudRunnerLogger.logRemoteCli(`[ERROR] ${error.message}`); | 
					
						
							|  |  |  |           throw new Error(error.toString()); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         if (stderr) { | 
					
						
							| 
									
										
										
										
											2021-12-26 01:52:09 +00:00
										 |  |  |           CloudRunnerLogger.logRemoteCli(`[DIAGNOSTIC] ${stderr.toString()}`); | 
					
						
							| 
									
										
										
										
											2021-12-26 03:07:37 +00:00
										 |  |  |           return; | 
					
						
							| 
									
										
										
										
											2021-12-26 01:48:36 +00:00
										 |  |  |         } | 
					
						
							|  |  |  |         const outputChunk = `${stdout.toString()}`; | 
					
						
							| 
									
										
										
										
											2021-12-26 01:05:51 +00:00
										 |  |  |         CloudRunnerLogger.logRemoteCli(outputChunk); | 
					
						
							|  |  |  |         output += outputChunk; | 
					
						
							| 
									
										
										
										
											2021-12-26 01:08:40 +00:00
										 |  |  |       }); | 
					
						
							|  |  |  |       child.on('close', function (code) { | 
					
						
							| 
									
										
										
										
											2021-12-26 01:52:09 +00:00
										 |  |  |         if (code !== 0) { | 
					
						
							| 
									
										
										
										
											2021-12-26 03:07:37 +00:00
										 |  |  |           throw new Error(`[exit code ${code}] Output Ended`); | 
					
						
							| 
									
										
										
										
											2021-12-26 01:52:09 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-12-26 03:07:37 +00:00
										 |  |  |         CloudRunnerLogger.logRemoteCli(`[exit code 0] Output Ended`); | 
					
						
							| 
									
										
										
										
											2021-12-26 01:08:40 +00:00
										 |  |  |         promise(output); | 
					
						
							| 
									
										
										
										
											2021-12-26 00:32:00 +00:00
										 |  |  |       }); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2021-12-25 20:05:17 +00:00
										 |  |  |   } | 
					
						
							|  |  |  | } |