rj-action-library/Tools/Git/Git.cs

61 lines
1.2 KiB
C#

#if TOOLS
using Godot;
using Rokojori;
using System.Diagnostics;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Rokojori.Tools
{
public class GitResponse
{
public string rawResponse;
public int exitCode;
}
public class Git
{
public static async Task<GitResponse> GetStatus( string path )
{
var process = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "git",
Arguments = "status",
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false,
CreateNoWindow = true,
WorkingDirectory = path
}
};
process.Start();
var outputTask = process.StandardOutput.ReadToEndAsync();
var errorTask = process.StandardError.ReadToEndAsync();
await Task.WhenAll( outputTask, errorTask );
await process.WaitForExitAsync();
var response = new GitResponse();
response.exitCode = process.ExitCode;
if ( process.ExitCode == 0 )
{
response.rawResponse = outputTask.Result;
}
else
{
response.rawResponse = errorTask.Result;
}
return response;
}
}
}
#endif