Skip to content

Commit 043abc6

Browse files
committed
Add build-options. Fix resetting build-defines after build.
1 parent f732be2 commit 043abc6

File tree

3 files changed

+26
-4
lines changed

3 files changed

+26
-4
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ Set application build number. Only for default build method.
3434

3535
Set scripting define symbols. For example, `RELEASE_VERSION;ENG_VERSION`. Only for default build method.
3636

37+
### `build-options`
38+
39+
List of additional [BuildOptions](https://docs.unity3d.com/ScriptReference/BuildOptions.html). For example, `SymlinkLibraries, CompressWithLz4HC`. Only for default build method.
40+
3741
### `android-keystore-base64`
3842

3943
The base64 contents of the android keystore file. Only for default build method.

src/BuildCommand.cs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
using System.IO;
33
using System.Linq;
44
using System.Collections.Generic;
5-
using UnityEngine;
65
using UnityEditor;
76
using UnityEditor.Build.Reporting;
87
using UnityEditor.Callbacks;
@@ -21,9 +20,10 @@ public static void Build()
2120
HandleDefines(args);
2221
var target = HandleTarget(args);
2322
var buildPath = HandleBuildPath(args);
23+
var buildOptions = HandleBuildOptions(args);
2424
var scenes = HandleScenesList(args);
2525

26-
var buildReport = BuildPipeline.BuildPlayer(scenes, buildPath, target, BuildOptions.None);
26+
var buildReport = BuildPipeline.BuildPlayer(scenes, buildPath, target, buildOptions);
2727
int code = (buildReport.summary.result == BuildResult.Succeeded) ? 0 : 1;
2828

2929
ResetDefines();
@@ -70,6 +70,19 @@ private static string[] HandleScenesList(Dictionary<string, string> args)
7070
return EditorBuildSettings.scenes.Where(scene => scene.enabled).Select(s => s.path).ToArray();
7171
}
7272

73+
private static BuildOptions HandleBuildOptions(Dictionary<string, string> args)
74+
{
75+
var buildOptions = BuildOptions.None;
76+
if (args.ContainsKey("buildOptions"))
77+
{
78+
buildOptions = args["buildOptions"]
79+
.Split(',')
80+
.Select(stringValue => Enum.TryParse<BuildOptions>(stringValue.Trim(), true, out var enumValue) ? enumValue : BuildOptions.None)
81+
.Aggregate((f1, f2) => f1 | f2);
82+
}
83+
return buildOptions;
84+
}
85+
7386
private static void HandleVersion(Dictionary<string, string> args)
7487
{
7588
if (args.ContainsKey("buildVersion"))
@@ -90,8 +103,8 @@ private static void HandleDefines(Dictionary<string, string> args)
90103
{
91104
if (args.ContainsKey("buildDefines"))
92105
{
93-
string defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
94-
string newDefines = defines + ";" + args["buildDefines"];
106+
originalDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
107+
string newDefines = originalDefines + ";" + args["buildDefines"];
95108
PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, newDefines);
96109
}
97110
}
@@ -101,6 +114,7 @@ private static void ResetDefines()
101114
if (originalDefines != null)
102115
{
103116
PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, originalDefines);
117+
originalDefines = null;
104118
}
105119
}
106120

src/build.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ async function run() {
1515
const buildVersion = core.getInput('build-version');
1616
const buildNumber = core.getInput('build-number');
1717
const buildDefines = core.getInput('build-defines');
18+
const buildOptions = core.getInput('build-options');
1819
const androidKeystoreBase64 = core.getInput('android-keystore-base64');
1920
const androidKeystorePass = core.getInput('android-keystore-pass');
2021
const androidKeyaliasName = core.getInput('android-keyalias-name');
@@ -52,6 +53,9 @@ async function run() {
5253
if (buildDefines) {
5354
buildArgs += ` -buildDefines "${buildDefines}"`;
5455
}
56+
if (buildOptions) {
57+
buildArgs += ` -buildOptions "${buildOptions}"`;
58+
}
5559
if (androidKeystoreBase64) {
5660
buildArgs += ` -androidKeystoreBase64 "${androidKeystoreBase64}"`;
5761
}

0 commit comments

Comments
 (0)