-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBuild.cake
More file actions
126 lines (99 loc) · 3.88 KB
/
Build.cake
File metadata and controls
126 lines (99 loc) · 3.88 KB
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
//////////////////////////////////////////////////////////////////////
// ARGUMENTS
//////////////////////////////////////////////////////////////////////
var Target = Argument("Target", "Build");
var Platform = Argument("Platform", "Linux");
var Configuration = Argument("Configuration", "Release");
var Project = "Psythyst.Core.Unity";
var Solution = "";
//////////////////////////////////////////////////////////////////////
// TASKS
//////////////////////////////////////////////////////////////////////
Task("Configure-Solution").Does(() =>
{
Solution = $"{Project}.{Platform}.sln";
});
Task("Restore-NuGet-Package")
.IsDependentOn("Configure-Solution")
.IsDependentOn("Generate-Protobuild-Project")
.Does(() =>
{
if(FileExists(Solution))
NuGetRestore(Solution, new NuGetRestoreSettings { ToolPath = "./Tools/nuget.exe" });
});
Task("Copy-Output").Does(() =>
{
Func<IFileSystemInfo, bool> Exclude_OutputDirectory =
FileSystemInfo => !FileSystemInfo.Path.FullPath.EndsWith(
"Bin", StringComparison.OrdinalIgnoreCase);
var OutputDirectory = $"./Bin/{Platform}/AnyCPU/{Configuration}";
var DllCollection = GetFiles($"./**/{Platform}/AnyCPU/{Configuration}/*.dll", Exclude_OutputDirectory);
if (!DirectoryExists(OutputDirectory))
CreateDirectory(OutputDirectory);
else
CleanDirectory(OutputDirectory);
CopyFiles(DllCollection, OutputDirectory);
});
Task("Build")
.IsDependentOn("Configure-Solution")
.Does(() =>
{
if(FileExists(Solution))
MSBuild(Solution, Settings => Settings.SetConfiguration(Configuration));
});
Task("Clean-Project-Folder")
.IsDependentOn("Configure-Solution")
.Does(() =>
{
var Settings = new DeleteDirectorySettings { Recursive = true, Force = true };
var PublishCollection = GetDirectories("./**/Publish");
var PackageCollection = GetDirectories("./**/Package");
DeleteDirectories(PublishCollection, Settings);
DeleteDirectories(PackageCollection, Settings);
var ObjCollection = GetDirectories("./**/obj");
var BinCollection = GetDirectories("./**/bin");
DeleteDirectories(ObjCollection, Settings);
DeleteDirectories(BinCollection, Settings);
if (DirectoryExists($"./Bin/{Platform}"))
DeleteDirectory($"./Bin/{Platform}", Settings);
});
Task("Clean-Project")
.IsDependentOn("Clean-Protobuild-Project")
.IsDependentOn("Clean-Project-Folder");
//////////////////////////////////////////////////////////////////////
// PROTOBUILD TASKS
//////////////////////////////////////////////////////////////////////
Task("Generate-Protobuild-Project")
.IsDependentOn("Configure-Solution")
.Does(() =>
{
StartProcess("./Protobuild.exe", new ProcessSettings{ Arguments = $"--generate {Platform}" });
});
Task("Clean-Protobuild-Project")
.IsDependentOn("Configure-Solution")
.Does(() =>
{
StartProcess("./Protobuild.exe", new ProcessSettings{ Arguments = $"--clean {Platform}" });
var ProjectCollection = GetFiles($"./**/*.{Platform}.csproj");
var SolutionCollection = GetFiles($"./**/*.{Platform}.sln");
var SpeccacheCollection = GetFiles($"*.{Platform}.speccache");
DeleteFiles(ProjectCollection);
DeleteFiles(SolutionCollection);
DeleteFiles(SpeccacheCollection);
});
//////////////////////////////////////////////////////////////////////
// TASK TARGETS
//////////////////////////////////////////////////////////////////////
Task("Default")
.IsDependentOn("Generate-Protobuild-Project")
.IsDependentOn("Restore-NuGet-Package")
.IsDependentOn("Build")
.IsDependentOn("Copy-Output");
Task("Quick-Build")
.IsDependentOn("Build")
.IsDependentOn("Copy-Output");
Task("Clean").IsDependentOn("Clean-Project");
//////////////////////////////////////////////////////////////////////
// EXECUTION
//////////////////////////////////////////////////////////////////////
RunTarget(Target);