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();
 | 
						|
    }
 | 
						|
}
 |