Files
sbox-public/engine/Tools/SboxBuild/Pipelines/Build.cs
Lorenz Junglas 64fc154f39 Fix private PR formatting check (#3473)
* Make sure our private PR action run also check BuildTool formatting

* Format BuildTools
2025-11-27 10:17:39 +00:00

58 lines
1.7 KiB
C#

using System.IO;
using Facepunch;
using Facepunch.Steps;
namespace Facepunch.Pipelines;
internal class Build
{
public static Pipeline Create( BuildConfiguration configuration = BuildConfiguration.Developer,
bool clean = false,
bool skipNative = false,
bool skipManaged = false )
{
var builder = new PipelineBuilder( "Build" );
var isPublicSource = IsPublicSourceDistribution();
var shouldSkipNative = skipNative || isPublicSource;
if ( isPublicSource )
{
Log.Info( "Detected public source distribution; downloading public artifacts and skipping native build." );
builder.AddStep( new DownloadPublicArtifacts( "Download Public Artifacts" ) );
}
// Always add interop gen
builder.AddStep( new Steps.InteropGen( "Interop Gen", isPublicSource ) );
if ( !isPublicSource )
{
builder.AddStep( new Steps.ShaderProc( "Shader Proc" ) );
}
// Add native build step if not skipped
if ( !shouldSkipNative )
{
builder.AddStep( new GenerateSolutions( "Generate Solutions", configuration ) );
builder.AddStep( new BuildNative( "Build Native", configuration, clean ) );
}
// Add managed build step if not skipped
if ( !skipManaged )
{
builder.AddStep( new BuildManaged( "Build Managed", clean ) );
}
return builder.Build();
}
private static bool IsPublicSourceDistribution()
{
var repoRoot = Path.TrimEndingDirectorySeparator( Path.GetFullPath( Directory.GetCurrentDirectory() ) );
// Those are only included in the full source distribution
var publicDir = Path.Combine( repoRoot, "public" );
var steamworksDir = Path.Combine( repoRoot, "steamworks" );
return !Directory.Exists( publicDir ) || !Directory.Exists( steamworksDir );
}
}