Files
GameJamDungeon/addons/deploy_to_steamos/GodotExportManager.cs

53 lines
1.7 KiB
C#

using System;
using System.Diagnostics;
using Godot;
namespace Laura.DeployToSteamOS;
public class GodotExportManager
{
public static void ExportProject(
string projectPath,
string outputPath,
bool isReleaseBuild,
Callable logCallable,
Action OnProcessExited = null)
{
logCallable.CallDeferred("Starting project export, this may take a while.");
logCallable.CallDeferred($"Output path: {outputPath}");
logCallable.CallDeferred($"Is Release Build: {(isReleaseBuild ? "Yes" : "No")}");
Process exportProcess = new Process();
exportProcess.StartInfo.FileName = OS.GetExecutablePath();
var arguments = $"--headless --path \"{projectPath}\" ";
arguments += isReleaseBuild ? "--export-release " : "--export-debug ";
arguments += "\"Steamdeck\" ";
arguments += $"\"{outputPath}\"";
exportProcess.StartInfo.Arguments = arguments;
exportProcess.StartInfo.UseShellExecute = false;
exportProcess.StartInfo.RedirectStandardOutput = true;
exportProcess.EnableRaisingEvents = true;
exportProcess.ErrorDataReceived += (sender, args) =>
{
throw new Exception("Error while building project: " + args.Data);
};
exportProcess.OutputDataReceived += (sender, args) =>
{
logCallable.CallDeferred(args.Data);
};
exportProcess.Exited += (sender, args) =>
{
OnProcessExited?.Invoke();
exportProcess.WaitForExit();
};
exportProcess.Start();
exportProcess.BeginOutputReadLine();
}
}