Skip to content

Commit

Permalink
Merge branch 'release/v8.0.0-pre.1'
Browse files Browse the repository at this point in the history
  • Loading branch information
robinnorth committed Jan 7, 2025
2 parents e0ddceb + a68dc53 commit 43cfbcf
Show file tree
Hide file tree
Showing 36 changed files with 935 additions and 1,099 deletions.
363 changes: 171 additions & 192 deletions .editorconfig

Large diffs are not rendered by default.

238 changes: 123 additions & 115 deletions CHANGELOG.md

Large diffs are not rendered by default.

32 changes: 16 additions & 16 deletions Editor/Build/Action/BuildAction.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;
using UnityEditor;
using UnityEngine;

Expand All @@ -18,7 +18,7 @@ public enum ActionType
public string note = string.Empty;
public bool actionEnabled = true;
[Tooltip("BuildAction should run when 'Configure Editor Environment' button is clicked")] public bool configureEditor = false;
public BuildFilter filter = new BuildFilter();
public BuildFilter filter = new();

/// <summary>
/// This will be exectued once before/after all players are built.
Expand All @@ -33,7 +33,7 @@ public virtual void Execute()
public virtual void PerBuildExecute(
BuildReleaseType releaseType,
BuildPlatform platform,
BuildArchitecture architecture,
BuildTarget target,
BuildScriptingBackend scriptingBackend,
BuildDistribution distribution,
DateTime buildTime, ref BuildOptions options, string configKey, string buildPath)
Expand All @@ -50,10 +50,10 @@ public static string ResolveExecuteTokens(string prototype)
return prototype;
}

public static string ResolvePerBuildExecuteTokens(string prototype, BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, string buildPath)
public static string ResolvePerBuildExecuteTokens(string prototype, BuildReleaseType releaseType, BuildPlatform platform, BuildTarget target, BuildScriptingBackend scriptingBackend, BuildDistribution distribution, DateTime buildTime, string buildPath)
{
prototype = TokensUtility.ResolveBuildOutputTokens(prototype, buildPath);
prototype = TokensUtility.ResolveBuildConfigurationTokens(prototype, releaseType, platform, architecture, scriptingBackend, distribution, buildTime);
prototype = TokensUtility.ResolveBuildConfigurationTokens(prototype, releaseType, platform, target, scriptingBackend, distribution, buildTime);

return prototype;
}
Expand Down Expand Up @@ -81,15 +81,15 @@ public void Draw(SerializedObject obj)
actionType = (ActionType)EditorGUILayout.EnumPopup("Action Type", actionType);

if (isPreBuildActionCanConfigureEditor)
EditorGUILayout.PropertyField(obj.FindProperty("configureEditor"));
_ = EditorGUILayout.PropertyField(obj.FindProperty("configureEditor"));

EditorGUILayout.PropertyField(obj.FindProperty("note"));
_ = EditorGUILayout.PropertyField(obj.FindProperty("note"));

// Only Per-Build actions can be filtered
if (actionType == ActionType.PerBuild)
EditorGUILayout.PropertyField(obj.FindProperty("filter"), GUILayout.Height(0));
_ = EditorGUILayout.PropertyField(obj.FindProperty("filter"), GUILayout.Height(0));

obj.ApplyModifiedProperties();
_ = obj.ApplyModifiedProperties();
}

public override string ToString()
Expand All @@ -109,12 +109,12 @@ protected virtual void DrawProperties(SerializedObject obj)

while (!done && prop != null)
{
if (prop.name == "actionName" ||
prop.name == "actionType" ||
prop.name == "note" ||
prop.name == "actionEnabled" ||
prop.name == "filter" ||
prop.name == "configureEditor")
if (prop.name is "actionName" or
"actionType" or
"note" or
"actionEnabled" or
"filter" or
"configureEditor")
{
// Already drawn these. Go to next, don't enter into object.
done = !prop.NextVisible(false);
Expand All @@ -134,7 +134,7 @@ protected virtual void DrawProperties(SerializedObject obj)

protected virtual void DrawProperty(SerializedProperty prop)
{
EditorGUILayout.PropertyField(prop);
_ = EditorGUILayout.PropertyField(prop);
}
}
}
43 changes: 19 additions & 24 deletions Editor/Build/Action/BuildFilter.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@


using System;

namespace SuperUnityBuild.BuildTool
Expand All @@ -20,7 +20,7 @@ public enum FilterType
{
ReleaseType,
Platform,
Architecture,
Target,
Distribution,
FullConfigurationKey
}
Expand All @@ -38,15 +38,15 @@ public enum FilterComparison
public FilterCondition condition;
public FilterClause[] clauses;

public bool Evaluate(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, string configKeychain)
public bool Evaluate(BuildReleaseType releaseType, BuildPlatform platform, BuildTarget target, BuildDistribution distribution, string configKeychain)
{
if (clauses == null || clauses.Length == 0)
return true;

// Set default state for success based on condition type.
bool success = true;
if (condition == FilterCondition.Any ||
condition == FilterCondition.ExactlyOne)
if (condition is FilterCondition.Any or
FilterCondition.ExactlyOne)
{
success = false;
}
Expand All @@ -56,28 +56,28 @@ public bool Evaluate(BuildReleaseType releaseType, BuildPlatform platform, Build
if (condition == FilterCondition.Any)
{
// Succeed as soon as any test evaluates true.
success |= clauses[i].Evaluate(releaseType, platform, architecture, distribution, configKeychain);
success |= clauses[i].Evaluate(releaseType, platform, target, distribution, configKeychain);
if (success)
break;
}
else if (condition == FilterCondition.All)
{
// Succeed only if all tests evaluate true.
success &= clauses[i].Evaluate(releaseType, platform, architecture, distribution, configKeychain);
success &= clauses[i].Evaluate(releaseType, platform, target, distribution, configKeychain);
if (!success)
break;
}
else if (condition == FilterCondition.None)
{
// Succeed only if all tests fail.
success &= !(clauses[i].Evaluate(releaseType, platform, architecture, distribution, configKeychain));
success &= !clauses[i].Evaluate(releaseType, platform, target, distribution, configKeychain);
if (!success)
break;
}
else if (condition == FilterCondition.ExactlyOne)
{
// Succeed only if exactly one test evaluates true.
if (clauses[i].Evaluate(releaseType, platform, architecture, distribution, configKeychain))
if (clauses[i].Evaluate(releaseType, platform, target, distribution, configKeychain))
{
if (success)
{
Expand All @@ -103,7 +103,7 @@ public class FilterClause
public FilterComparison comparison;
public string test;

public bool Evaluate(BuildReleaseType releaseType, BuildPlatform platform, BuildArchitecture architecture, BuildDistribution distribution, string configKeychain)
public bool Evaluate(BuildReleaseType releaseType, BuildPlatform platform, BuildTarget target, BuildDistribution distribution, string configKeychain)
{
bool success = false;

Expand All @@ -117,8 +117,8 @@ public bool Evaluate(BuildReleaseType releaseType, BuildPlatform platform, Build
case FilterType.Platform:
success = PerformTest(platform.platformName);
break;
case FilterType.Architecture:
success = PerformTest(architecture.name);
case FilterType.Target:
success = PerformTest(target.name);
break;
case FilterType.Distribution:
success = PerformTest(distribution.distributionName);
Expand All @@ -133,19 +133,14 @@ public bool Evaluate(BuildReleaseType releaseType, BuildPlatform platform, Build

private bool PerformTest(string targetString)
{
switch (comparison)
return comparison switch
{
case FilterComparison.Equals:
return targetString.Equals(test, StringComparison.OrdinalIgnoreCase);
case FilterComparison.NotEqual:
return !(targetString.Equals(test, StringComparison.OrdinalIgnoreCase));
case FilterComparison.Contains:
return targetString.ToUpperInvariant().Contains(test);
case FilterComparison.DoesNotContain:
return !(targetString.ToUpperInvariant().Contains(test));
default:
return false;
}
FilterComparison.Equals => targetString.Equals(test, StringComparison.OrdinalIgnoreCase),
FilterComparison.NotEqual => !targetString.Equals(test, StringComparison.OrdinalIgnoreCase),
FilterComparison.Contains => targetString.ToUpperInvariant().Contains(test),
FilterComparison.DoesNotContain => !targetString.ToUpperInvariant().Contains(test),
_ => false,
};
}
}
}
Expand Down
Loading

0 comments on commit 43cfbcf

Please sign in to comment.