-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.cake
131 lines (105 loc) · 3.51 KB
/
build.cake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#addin "Cake.Incubator"
#addin "Cake.Docker"
#addin nuget:https://www.myget.org/F/alm-vr/api/v2?package=Cake.GitVersioning&prerelease
#addin "Cake.FileHelpers"
//////////////////////////////////////////////////////////////////////
// ARGUMENTS
//////////////////////////////////////////////////////////////////////
var target = Argument("target", "Default");
var configuration = Argument("configuration", "Release");
//////////////////////////////////////////////////////////////////////
// PREPARATION
//////////////////////////////////////////////////////////////////////
// Define directories.
var clientBuildDir = Directory("./src/client/build") + Directory(configuration);
var unityBuildDir = Directory("./build") + Directory(configuration);
//////////////////////////////////////////////////////////////////////
// TASKS
//////////////////////////////////////////////////////////////////////
Task("Clean")
.Does(() =>
{
CleanDirectory(clientBuildDir);
CleanDirectory(unityBuildDir);
if (FileExists("./almvr.zip"))
DeleteFile("./almvr.zip");
});
Task("Build-Client")
.IsDependentOn("Clean")
.Does(() =>
{
var dotNetCoreSettings = new DotNetCoreBuildSettings
{
Configuration = configuration
};
DotNetCoreBuild("./src/client/AlmVR.Client.sln", dotNetCoreSettings);
});
Task("Build-Unity")
.IsDependentOn("Build-Client")
.WithCriteria(() => false) // We cannot currently build a Unity project on AppVeyor due to a Unity bug.
.Does(() =>
{
var unityEditorLocation = EnvironmentVariable("UNITY_EDITOR_LOCATION") ?? @"C:\Program Files\Unity\Editor\Unity.exe";
Information($"Unity Editor Location: {unityEditorLocation}");
var projectPath = System.IO.Path.GetFullPath("./src/headset");
Information($"Unity Project Path: {projectPath}");
var outPath = System.IO.Path.GetFullPath((string)unityBuildDir) + "\\AlmVR.exe";
Information($"Unity Out Path: {outPath}");
var logPath = System.IO.Path.GetFullPath(".\\unity.log");
Information($"Unity Log Path: {logPath}");
var settings = new ProcessSettings
{
Arguments =
"-quit " +
"-batchmode " +
$"-projectpath \"{projectPath}\" " +
$"-buildWindows64Player \"{outPath}\" " +
"-nographics " +
$"-log \"{logPath}\" ",
RedirectStandardError = true,
RedirectStandardOutput = true
};
IEnumerable<string> redirectedStandardOutput;
IEnumerable<string> redirectedErrorOutput;
int exitCode = StartProcess(
unityEditorLocation,
settings,
out redirectedStandardOutput,
out redirectedErrorOutput
);
if (FileExists(logPath))
Information(FileReadText(logPath));
foreach (var line in redirectedStandardOutput)
{
Information(line);
}
// Throw exception if anything was written to the standard error.
if (redirectedErrorOutput.Any())
{
throw new Exception(
string.Format(
"Errors ocurred: {0}",
string.Join(", ", redirectedErrorOutput)
)
);
}
if (exitCode != 0)
throw new Exception($"Unity returned a non-zero exit code: \"{exitCode}\".");
if (!FileExists(unityBuildDir + File("AlmVR.exe")))
throw new Exception("Expected build output not created");
});
Task("Package")
.IsDependentOn("Build-Unity")
.Does(() =>
{
Zip(unityBuildDir, "./almvr.zip");
});
//////////////////////////////////////////////////////////////////////
// TASK TARGETS
//////////////////////////////////////////////////////////////////////
Task("Default")
.IsDependentOn("Package");
//////////////////////////////////////////////////////////////////////
// EXECUTION
//////////////////////////////////////////////////////////////////////
RunTarget(target);