Skip to content

Commit f7f3f70

Browse files
authored
Support activeBuildProfile parameter (#738)
* feat: add `-activeBuildProfile` * feat: descriptive error in case `-activeBuildProfile` is passed without actual value
1 parent c6c8236 commit f7f3f70

File tree

6 files changed

+46
-10
lines changed

6 files changed

+46
-10
lines changed

dist/default-build-script/Assets/Editor/UnityBuilderAction/Builder.cs

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,27 +56,40 @@ public static void BuildProject()
5656
// of either `UnityEditor.BuildPlayerOptions` or `UnityEditor.BuildPlayerWithProfileOptions`
5757
dynamic buildPlayerOptions;
5858

59-
if (options["customBuildProfile"] != "") {
59+
if (options.TryGetValue("activeBuildProfile", out var buildProfilePath)) {
60+
if (string.IsNullOrEmpty(buildProfilePath)) {
61+
throw new Exception("`-activeBuildProfile` is set but with an empty value; this shouldn't happen");
62+
}
6063

6164
#if UNITY_6000_0_OR_NEWER
6265
// Load build profile from Assets folder
63-
BuildProfile buildProfile = AssetDatabase.LoadAssetAtPath<BuildProfile>(options["customBuildProfile"]);
66+
var buildProfile = AssetDatabase.LoadAssetAtPath<BuildProfile>(buildProfilePath)
67+
?? throw new Exception("Build profile file not found at path: " + buildProfilePath);
68+
69+
#if !BUILD_PROFILE_LOADED
70+
throw new Exception("Build profile's define symbol not present before script execution; shouldn't happen");
71+
#endif // BUILD_PROFILE_LOADED
6472

65-
// Set it as active
66-
BuildProfile.SetActiveBuildProfile(buildProfile);
73+
// no need to set active profile, as already set by `-activeBuildProfile` CLI argument
74+
// BuildProfile.SetActiveBuildProfile(buildProfile);
75+
Debug.Log($"build profile: {buildProfile.name}");
6776

6877
// Define BuildPlayerWithProfileOptions
6978
buildPlayerOptions = new BuildPlayerWithProfileOptions {
7079
buildProfile = buildProfile,
7180
locationPathName = options["customBuildPath"],
7281
options = buildOptions,
7382
};
74-
#else
83+
#else // UNITY_6000_0_OR_NEWER
7584
throw new Exception("Build profiles are not supported by this version of Unity (" + Application.unityVersion +")");
76-
#endif
85+
#endif // UNITY_6000_0_OR_NEWER
7786

7887
} else {
7988

89+
#if BUILD_PROFILE_LOADED
90+
throw new Exception("Build profile's define symbol present; shouldn't happen");
91+
#endif // BUILD_PROFILE_LOADED
92+
8093
// Gather values from project
8194
var scenes = EditorBuildSettings.scenes.Where(scene => scene.enabled).Select(s => s.path).ToArray();
8295

dist/default-build-script/Assets/Editor/UnityBuilderAction/Input/ArgumentsParser.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,19 @@ public static Dictionary<string, string> GetValidatedOptions()
2121
EditorApplication.Exit(110);
2222
}
2323

24+
#if UNITY_6000_0_OR_NEWER
25+
var buildProfileSupport = true;
26+
#else
27+
var buildProfileSupport = false;
28+
#endif // UNITY_6000_0_OR_NEWER
29+
30+
string buildProfile;
31+
if (buildProfileSupport && validatedOptions.TryGetValue("activeBuildProfile", out buildProfile)) {
32+
if (validatedOptions.ContainsKey("buildTarget")) {
33+
Console.WriteLine("Extra argument -buildTarget");
34+
EditorApplication.Exit(122);
35+
}
36+
} else {
2437
string buildTarget;
2538
if (!validatedOptions.TryGetValue("buildTarget", out buildTarget)) {
2639
Console.WriteLine("Missing argument -buildTarget");
@@ -31,6 +44,7 @@ public static Dictionary<string, string> GetValidatedOptions()
3144
Console.WriteLine(buildTarget + " is not a defined " + typeof(BuildTarget).Name);
3245
EditorApplication.Exit(121);
3346
}
47+
}
3448

3549
string customBuildPath;
3650
if (!validatedOptions.TryGetValue("customBuildPath", out customBuildPath)) {

dist/platforms/mac/steps/build.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,10 +153,11 @@ echo ""
153153
-password "$UNITY_PASSWORD" \
154154
-customBuildName "$BUILD_NAME" \
155155
-projectPath "$UNITY_PROJECT_PATH" \
156-
-buildTarget "$BUILD_TARGET" \
156+
$( [ -z "$BUILD_PROFILE" ] && echo "-buildTarget $BUILD_TARGET") \
157157
-customBuildTarget "$BUILD_TARGET" \
158158
-customBuildPath "$CUSTOM_BUILD_PATH" \
159159
-customBuildProfile "$BUILD_PROFILE" \
160+
${BUILD_PROFILE:+-activeBuildProfile} ${BUILD_PROFILE:+"$BUILD_PROFILE"} \
160161
-executeMethod "$BUILD_METHOD" \
161162
-buildVersion "$VERSION" \
162163
-androidVersionCode "$ANDROID_VERSION_CODE" \

dist/platforms/ubuntu/steps/build.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,10 +125,11 @@ unity-editor \
125125
$( [ "${MANUAL_EXIT}" == "true" ] || echo "-quit" ) \
126126
-customBuildName "$BUILD_NAME" \
127127
-projectPath "$UNITY_PROJECT_PATH" \
128-
-buildTarget "$BUILD_TARGET" \
128+
$( [ -z "$BUILD_PROFILE" ] && echo "-buildTarget $BUILD_TARGET" ) \
129129
-customBuildTarget "$BUILD_TARGET" \
130130
-customBuildPath "$CUSTOM_BUILD_PATH" \
131131
-customBuildProfile "$BUILD_PROFILE" \
132+
${BUILD_PROFILE:+-activeBuildProfile} ${BUILD_PROFILE:+"$BUILD_PROFILE"} \
132133
-executeMethod "$BUILD_METHOD" \
133134
-buildVersion "$VERSION" \
134135
-androidVersionCode "$ANDROID_VERSION_CODE" \

dist/platforms/windows/build.ps1

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,6 @@ $unityArgs = @(
166166
"-customBuildName", "`"$Env:BUILD_NAME`"",
167167
"-projectPath", "`"$Env:UNITY_PROJECT_PATH`"",
168168
"-executeMethod", "`"$Env:BUILD_METHOD`"",
169-
"-buildTarget", "`"$Env:BUILD_TARGET`"",
170169
"-customBuildTarget", "`"$Env:BUILD_TARGET`"",
171170
"-customBuildPath", "`"$Env:CUSTOM_BUILD_PATH`"",
172171
"-customBuildProfile", "`"$Env:BUILD_PROFILE`"",
@@ -181,6 +180,13 @@ $unityArgs = @(
181180
"-logfile", "-"
182181
) + $customParametersArray
183182

183+
if (-not $Env:BUILD_PROFILE) {
184+
$unityArgs += @("-buildTarget", $Env:BUILD_TARGET)
185+
}
186+
if ($Env:BUILD_PROFILE) {
187+
$unityArgs += @("-activeBuildProfile", $Env:BUILD_PROFILE)
188+
}
189+
184190
# Remove null items as that will fail the Start-Process call
185191
$unityArgs = $unityArgs | Where-Object { $_ -ne $null }
186192

test-project/Assets/Settings/Build Profiles/Sample WebGL Build Profile.asset

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ MonoBehaviour:
2020
rid: 200022742090383361
2121
m_OverrideGlobalSceneList: 0
2222
m_Scenes: []
23-
m_ScriptingDefines: []
23+
m_ScriptingDefines:
24+
- BUILD_PROFILE_LOADED
2425
m_PlayerSettingsYaml:
2526
m_Settings: []
2627
references:

0 commit comments

Comments
 (0)