12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- //
- // 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 static 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
|