53 lines
1.6 KiB
C#
53 lines
1.6 KiB
C#
using System.Collections.ObjectModel;
|
|
|
|
namespace UnrealSharpBuildTool.Actions;
|
|
|
|
public class BuildSolution : BuildToolAction
|
|
{
|
|
private readonly BuildConfig _buildConfig;
|
|
private readonly string _folder;
|
|
private readonly Collection<string>? _extraArguments;
|
|
|
|
public BuildSolution(string folder, Collection<string>? extraArguments = null, BuildConfig buildConfig = BuildConfig.Debug)
|
|
{
|
|
_folder = Program.FixPath(folder);
|
|
_buildConfig = buildConfig;
|
|
_extraArguments = extraArguments;
|
|
}
|
|
|
|
public override bool RunAction()
|
|
{
|
|
if (!Directory.Exists(_folder))
|
|
{
|
|
throw new Exception($"Couldn't find the solution file at \"{_folder}\"");
|
|
}
|
|
|
|
using BuildToolProcess buildSolutionProcess = new BuildToolProcess();
|
|
|
|
if (_buildConfig == BuildConfig.Publish)
|
|
{
|
|
buildSolutionProcess.StartInfo.ArgumentList.Add("publish");
|
|
}
|
|
else
|
|
{
|
|
buildSolutionProcess.StartInfo.ArgumentList.Add("build");
|
|
}
|
|
|
|
buildSolutionProcess.StartInfo.ArgumentList.Add($"{_folder}");
|
|
|
|
buildSolutionProcess.StartInfo.ArgumentList.Add("--configuration");
|
|
buildSolutionProcess.StartInfo.ArgumentList.Add(Program.GetBuildConfiguration(_buildConfig));
|
|
buildSolutionProcess.StartInfo.WorkingDirectory = _folder;
|
|
|
|
if (_extraArguments != null)
|
|
{
|
|
foreach (var argument in _extraArguments)
|
|
{
|
|
buildSolutionProcess.StartInfo.ArgumentList.Add(argument);
|
|
}
|
|
}
|
|
|
|
return buildSolutionProcess.StartBuildToolProcess();
|
|
}
|
|
}
|