-
Notifications
You must be signed in to change notification settings - Fork 1
/
build.cake
110 lines (88 loc) · 3.24 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
// ---------------- Constants ----------------
const string buildTarget = "build";
const string releaseTarget = "build_release";
const string testTarget = "run_test";
const string zipTarget = "create_zip";
const string defaultTarget = buildTarget;
string target = Argument( "target", defaultTarget );
FilePath sln = File( "src/VoiceMacroCodingPlugin.sln" );
const string distroPathName = "DistPackages";
DirectoryPath distroPath = Directory( distroPathName );
const string packageName = "VoiceMacro.Plugins.Coding";
const string version = "1.0.0";
MSBuildSettings msBuildSettings = new MSBuildSettings
{
Restore = true,
ToolVersion = MSBuildToolVersion.VS2019,
MaxCpuCount = 0
};
msBuildSettings = msBuildSettings.WithProperty( "Version", version )
.WithProperty( "AssemblyVersion", version )
.WithProperty( "FileVersion", version );
// ---------------- Tasks ----------------
Task( buildTarget )
.Does(
() =>
{
MSBuild( sln, msBuildSettings );
}
).Description( "Builds the debug build." );
Task( releaseTarget )
.Does(
() =>
{
EnsureDirectoryExists( distroPath );
CleanDirectory( distroPath );
msBuildSettings.Configuration = "Release";
MSBuild( sln, msBuildSettings );
}
).Description( "Builds the release build." );
Task( testTarget )
.Does(
() =>
{
// TODO: Maybe this should go into Cake.Frosting and use the test helpers
// in Seth.CakeLib?
FilePath testProject = "src/VoiceMacro.Plugins.Coding.Tests/VoiceMacro.Plugins.Coding.Tests.csproj";
DirectoryPath resultsDir = Directory( "TestResults" );
FilePath resultFile = resultsDir.CombineWithFilePath( "test_results.xml" );
EnsureDirectoryExists( resultsDir );
CleanDirectory( resultsDir );
DotNetCoreTestSettings settings = new DotNetCoreTestSettings
{
NoBuild = true,
NoRestore = true,
Configuration = "Debug",
ResultsDirectory = resultsDir,
VSTestReportPath = resultFile,
Verbosity = DotNetCoreVerbosity.Normal
};
// Need to restore to download the TestHost, which is a NuGet package.
Information( "Restoring..." );
DotNetCoreRestore( testProject.ToString() );
Information( "Restoring... Done!" );
Information( "Running Tests..." );
DotNetCoreTest( testProject.ToString(), settings );
Information( "Running Tests... Done!" );
}
).Description( "Runs all tests" );
Task( zipTarget )
.Does(
() =>
{
CopyFile(
File( "LICENSE_1_0.txt" ),
distroPath.CombineWithFilePath( File( $"{packageName}.LICENSE_1_0.txt" ) )
);
CopyFile(
File( "Readme.md" ),
distroPath.CombineWithFilePath( File( $"{packageName}.Readme.md" ) )
);
FilePath glob = distroPath.CombineWithFilePath( File( "(*.dll|*.pdb|*.txt|*md)" ) );
var files = GetFiles( glob.ToString() );
FilePath outputFile = distroPath.CombineWithFilePath( File( $"{packageName}_{version}.zip" ) );
Zip( distroPathName, outputFile.ToString(), files );
}
).Description( "Creates the .zip that contains the plugin." )
.IsDependentOn( releaseTarget );
RunTarget( target );