You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
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
|