95 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C#
		
	
	
		
		
			
		
	
	
			95 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C#
		
	
	
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//  AppLovinBuildPostProcessor.cs
							 | 
						|||
| 
								 | 
							
								//  AppLovin MAX Unity Plugin
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//  Created by Santosh Bagadi on 10/30/19.
							 | 
						|||
| 
								 | 
							
								//  Copyright © 2019 AppLovin. All rights reserved.
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#if UNITY_IOS || UNITY_IPHONE
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								using System.Diagnostics;
							 | 
						|||
| 
								 | 
							
								using System.IO;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								namespace AppLovinMax.Scripts.IntegrationManager.Editor
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    /// <summary>
							 | 
						|||
| 
								 | 
							
								    /// A helper class to run command line tools.
							 | 
						|||
| 
								 | 
							
								    ///
							 | 
						|||
| 
								 | 
							
								    /// TODO: Currently only supports shell (Linux). Add support for Windows machines.
							 | 
						|||
| 
								 | 
							
								    /// </summary>
							 | 
						|||
| 
								 | 
							
								    public class AppLovinCommandLine
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// Result obtained by running a command line command.
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        public class Result
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            /// <summary>
							 | 
						|||
| 
								 | 
							
								            /// Standard output stream from command line.
							 | 
						|||
| 
								 | 
							
								            /// </summary>
							 | 
						|||
| 
								 | 
							
								            public string StandardOutput;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            /// <summary>
							 | 
						|||
| 
								 | 
							
								            /// Standard error stream from command line. 
							 | 
						|||
| 
								 | 
							
								            /// </summary>
							 | 
						|||
| 
								 | 
							
								            public string StandardError;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            /// <summary>
							 | 
						|||
| 
								 | 
							
								            /// Exit code returned from command line.
							 | 
						|||
| 
								 | 
							
								            /// </summary>
							 | 
						|||
| 
								 | 
							
								            public int ExitCode;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            /// <summary>
							 | 
						|||
| 
								 | 
							
								            /// The description of the result that can be used for error logging.
							 | 
						|||
| 
								 | 
							
								            /// </summary>
							 | 
						|||
| 
								 | 
							
								            public string Message;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        /// <summary>
							 | 
						|||
| 
								 | 
							
								        /// Runs a command line tool using the provided <see cref="toolPath"/> and <see cref="arguments"/>.
							 | 
						|||
| 
								 | 
							
								        /// </summary>
							 | 
						|||
| 
								 | 
							
								        /// <param name="toolPath">The tool path to run</param>
							 | 
						|||
| 
								 | 
							
								        /// <param name="arguments">The arguments to be passed to the command line tool</param>
							 | 
						|||
| 
								 | 
							
								        /// <param name="workingDirectory">The directory from which to run this command.</param>
							 | 
						|||
| 
								 | 
							
								        /// <returns></returns>
							 | 
						|||
| 
								 | 
							
								        public static Result Run(string toolPath, string arguments, string workingDirectory)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            var stdoutFileName = Path.GetTempFileName();
							 | 
						|||
| 
								 | 
							
								            var stderrFileName = Path.GetTempFileName();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            var process = new Process();
							 | 
						|||
| 
								 | 
							
								            process.StartInfo.UseShellExecute = true;
							 | 
						|||
| 
								 | 
							
								            process.StartInfo.CreateNoWindow = false;
							 | 
						|||
| 
								 | 
							
								            process.StartInfo.RedirectStandardInput = false;
							 | 
						|||
| 
								 | 
							
								            process.StartInfo.RedirectStandardOutput = false;
							 | 
						|||
| 
								 | 
							
								            process.StartInfo.RedirectStandardError = false;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            process.StartInfo.WorkingDirectory = workingDirectory;
							 | 
						|||
| 
								 | 
							
								            process.StartInfo.FileName = "bash";
							 | 
						|||
| 
								 | 
							
								            process.StartInfo.Arguments = string.Format("-l -c '\"{0}\" {1} 1> {2} 2> {3}'", toolPath, arguments, stdoutFileName, stderrFileName);
							 | 
						|||
| 
								 | 
							
								            process.Start();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            process.WaitForExit();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            var stdout = File.ReadAllText(stdoutFileName);
							 | 
						|||
| 
								 | 
							
								            var stderr = File.ReadAllText(stderrFileName);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            File.Delete(stdoutFileName);
							 | 
						|||
| 
								 | 
							
								            File.Delete(stderrFileName);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            var result = new Result();
							 | 
						|||
| 
								 | 
							
								            result.StandardOutput = stdout;
							 | 
						|||
| 
								 | 
							
								            result.StandardError = stderr;
							 | 
						|||
| 
								 | 
							
								            result.ExitCode = process.ExitCode;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            var messagePrefix = result.ExitCode == 0 ? "Command executed successfully" : "Failed to run command";
							 | 
						|||
| 
								 | 
							
								            result.Message = string.Format("{0}: '{1} {2}'\nstdout: {3}\nstderr: {4}\nExit code: {5}", messagePrefix, toolPath, arguments, stdout, stderr, process.ExitCode);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            return result;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#endif
							 |