Skip to content

Commit 90b1deb

Browse files
authored
Merge pull request #277 from immutable/chore/build-script-mac
[DX-3098] chore: mac build script to build without alttester
2 parents 52f8664 + 749c26c commit 90b1deb

File tree

1 file changed

+90
-18
lines changed

1 file changed

+90
-18
lines changed

sample/Assets/Editor/MacBuilder.cs

Lines changed: 90 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,48 +2,120 @@
22

33
using UnityEngine;
44
using UnityEditor;
5+
using UnityEditor.SceneManagement;
56
using AltTester.AltTesterUnitySDK.Editor;
67
using AltTester.AltTesterUnitySDK;
78
using System;
89

9-
public class BuildScript
10+
public class MacBuilder
1011
{
12+
private const string DefaultBuildPath = "Builds/MacOS/SampleApp.app";
13+
14+
static void Build()
15+
{
16+
BuildPlayer(DefaultBuildPath, BuildOptions.None);
17+
}
18+
1119
static void BuildForAltTester()
20+
{
21+
BuildPlayer(DefaultBuildPath, BuildOptions.Development | BuildOptions.IncludeTestAssemblies | BuildOptions.AutoRunPlayer, true);
22+
}
23+
24+
private static void BuildPlayer(string defaultBuildPath, BuildOptions buildOptions, bool setupForAltTester = false)
1225
{
1326
try
1427
{
15-
BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();
16-
buildPlayerOptions.scenes = new string[] {
28+
string buildPath = GetBuildPathFromArgs(defaultBuildPath);
29+
BuildPlayerOptions buildPlayerOptions = CreateBuildPlayerOptions(buildPath, buildOptions);
30+
31+
if (setupForAltTester)
32+
{
33+
SetupAltTester(buildPlayerOptions);
34+
}
35+
36+
var results = BuildPipeline.BuildPlayer(buildPlayerOptions);
37+
38+
if (setupForAltTester)
39+
{
40+
// Clean up AltTester settings after build
41+
AltBuilder.RemoveAltTesterFromScriptingDefineSymbols(BuildTargetGroup.Standalone);
42+
RemoveAltFromScene(buildPlayerOptions.scenes[0]);
43+
}
44+
}
45+
catch (Exception exception)
46+
{
47+
Debug.LogException(exception);
48+
}
49+
}
50+
51+
private static string GetBuildPathFromArgs(string defaultBuildPath)
52+
{
53+
string[] args = Environment.GetCommandLineArgs();
54+
for (int i = 0; i < args.Length; i++)
55+
{
56+
if (args[i] == "--buildPath" && i + 1 < args.Length)
57+
{
58+
return args[i + 1];
59+
}
60+
}
61+
return defaultBuildPath;
62+
}
63+
64+
private static BuildPlayerOptions CreateBuildPlayerOptions(string buildPath, BuildOptions buildOptions)
65+
{
66+
return new BuildPlayerOptions
67+
{
68+
scenes = new[]
69+
{
1770
"Assets/Scenes/SelectAuthMethod.unity",
1871
"Assets/Scenes/UnauthenticatedScene.unity",
1972
"Assets/Scenes/AuthenticatedScene.unity",
2073
"Assets/Scenes/ZkEvmGetBalance.unity",
2174
"Assets/Scenes/ZkEvmGetTransactionReceipt.unity",
2275
"Assets/Scenes/ZkEvmSendTransaction.unity",
2376
"Assets/Scenes/ImxNftTransfer.unity"
24-
};
77+
},
78+
locationPathName = buildPath,
79+
target = BuildTarget.StandaloneOSX,
80+
options = buildOptions
81+
};
82+
}
2583

26-
buildPlayerOptions.locationPathName = "Builds/MacOS/SampleApp.app";
27-
buildPlayerOptions.target = BuildTarget.StandaloneOSX;
28-
buildPlayerOptions.options = BuildOptions.Development | BuildOptions.IncludeTestAssemblies | BuildOptions.AutoRunPlayer;
84+
private static void SetupAltTester(BuildPlayerOptions buildPlayerOptions)
85+
{
86+
AltBuilder.AddAltTesterInScriptingDefineSymbolsGroup(BuildTargetGroup.Standalone);
87+
AltBuilder.CreateJsonFileForInputMappingOfAxis();
2988

30-
// Setup for AltTester
31-
var buildTargetGroup = BuildTargetGroup.Standalone;
32-
AltBuilder.AddAltTesterInScriptingDefineSymbolsGroup(buildTargetGroup);
33-
if (buildTargetGroup == UnityEditor.BuildTargetGroup.Standalone)
34-
AltBuilder.CreateJsonFileForInputMappingOfAxis();
35-
var instrumentationSettings = new AltInstrumentationSettings();
36-
AltBuilder.InsertAltInScene(buildPlayerOptions.scenes[0], instrumentationSettings);
89+
var instrumentationSettings = new AltInstrumentationSettings();
90+
AltBuilder.InsertAltInScene(buildPlayerOptions.scenes[0], instrumentationSettings);
91+
}
3792

38-
var results = BuildPipeline.BuildPlayer(buildPlayerOptions);
39-
AltBuilder.RemoveAltTesterFromScriptingDefineSymbols(BuildTargetGroup.Standalone);
93+
public static void RemoveAltFromScene(string scene)
94+
{
95+
Debug.Log("Removing AltTesterPrefab from the [" + scene + "] scene.");
96+
97+
var sceneToModify = EditorSceneManager.OpenScene(scene);
98+
99+
// Find the AltTesterPrefab instance in the scene
100+
var altRunner = GameObject.FindObjectOfType<AltRunner>();
101+
102+
if (altRunner != null)
103+
{
104+
// Destroy the AltTesterPrefab instance
105+
GameObject.DestroyImmediate(altRunner.gameObject);
40106

107+
// Mark the scene as dirty and save it
108+
EditorSceneManager.MarkSceneDirty(sceneToModify);
109+
EditorSceneManager.SaveOpenScenes();
110+
111+
Debug.Log("AltTesterPrefab successfully removed from the [" + scene + "] scene.");
41112
}
42-
catch (Exception exception)
113+
else
43114
{
44-
Debug.LogException(exception);
115+
Debug.LogWarning("AltTesterPrefab was not found in the [" + scene + "] scene.");
45116
}
46117
}
118+
47119
}
48120

49121
#endif

0 commit comments

Comments
 (0)