Skip to content

Commit e4423a7

Browse files
committed
Adds building of the Generators solution
1 parent caa0cfd commit e4423a7

File tree

1 file changed

+28
-8
lines changed

1 file changed

+28
-8
lines changed

build.cake

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,12 @@ using System.Threading.Tasks;
55
var target = Argument("target", "Default");
66
var exercise = Argument<string>("exercise", null);
77

8-
var sourceDir = "./exercises";
8+
var exercisesSourceDir = "./exercises";
9+
var exercisesBuildDir = "./build/exercises";
10+
11+
var generatorsSourceDir = "./generators";
12+
var generatorsBuildDir = "./build/generators";
13+
914
var buildDir = "./build";
1015

1116
var parallelOptions = new ParallelOptions
@@ -19,17 +24,23 @@ Task("Clean")
1924
});
2025

2126
// Copy everything to build so we make no changes in the actual files.
27+
Task("CopyGenerators")
28+
.Does(() => {
29+
CopyDirectory($"{generatorsSourceDir}/", $"{generatorsBuildDir}");
30+
});
31+
2232
Task("CopyExercises")
2333
.IsDependentOn("Clean")
34+
.IsDependentOn("CopyGenerators")
2435
.Does(() => {
25-
CopyDirectory($"{sourceDir}/{exercise}", $"{buildDir}/{exercise}");
36+
CopyDirectory($"{exercisesSourceDir}/{exercise}", $"{exercisesBuildDir}/{exercise}");
2637
});
2738

2839
Task("EnableAllTests")
2940
.IsDependentOn("CopyExercises")
3041
.Does(() => {
3142
var skipRegex = new Regex(@"Skip\s*=\s*""Remove to run test""", RegexOptions.Compiled);
32-
var testFiles = GetFiles(buildDir + "/*/*Test.cs");
43+
var testFiles = GetFiles(exercisesBuildDir + "/*/*Test.cs");
3344

3445
foreach (var testFile in testFiles) {
3546
var contents = System.IO.File.ReadAllText(testFile.FullPath);
@@ -47,17 +58,17 @@ Task("TestRefactoringProjects")
4758
// These projects have a working default implementation, and have
4859
// all the tests enabled. These should pass without any changes.
4960
var refactoringProjects =
50-
GetFiles(buildDir + "/*/TreeBuilding.csproj")
51-
+ GetFiles(buildDir + "/*/Ledger.csproj")
52-
+ GetFiles(buildDir + "/*/Markdown.csproj");
61+
GetFiles(exercisesBuildDir + "/*/TreeBuilding.csproj")
62+
+ GetFiles(exercisesBuildDir + "/*/Ledger.csproj")
63+
+ GetFiles(exercisesBuildDir + "/*/Markdown.csproj");
5364

5465
Parallel.ForEach(refactoringProjects, parallelOptions, (project) => DotNetCoreTest(project.FullPath));
5566
});
5667

5768
Task("ReplaceStubWithExample")
5869
.IsDependentOn("TestRefactoringProjects")
5970
.Does(() => {
60-
var allProjects = GetFiles(buildDir + "/*/*.csproj");
71+
var allProjects = GetFiles(exercisesBuildDir + "/*/*.csproj");
6172

6273
foreach (var project in allProjects) {
6374
var projectDir = project.GetDirectory();
@@ -73,12 +84,21 @@ Task("ReplaceStubWithExample")
7384
Task("TestUsingExampleImplementation")
7485
.IsDependentOn("ReplaceStubWithExample")
7586
.Does(() => {
76-
var allProjects = GetFiles(buildDir + "/*/*.csproj");
87+
var allProjects = GetFiles(exercisesBuildDir + "/*/*.csproj");
7788
Parallel.ForEach(allProjects, parallelOptions, (project) => DotNetCoreTest(project.FullPath));
7889
});
7990

91+
Task("BuildGeneratorsSolution")
92+
.IsDependentOn("CopyGenerators")
93+
.Does(() => {
94+
var generatorsProject = GetFiles(generatorsBuildDir + "/*.csproj");
95+
Parallel.ForEach(generatorsProject, parallelOptions, (project) => NuGetRestore(project.FullPath));
96+
Parallel.ForEach(generatorsProject, parallelOptions, (project) => DotNetBuild(project.FullPath));
97+
});
98+
8099
Task("Default")
81100
.IsDependentOn("TestUsingExampleImplementation")
101+
.IsDependentOn("BuildGeneratorsSolution")
82102
.Does(() => { });
83103

84104
RunTarget(target);

0 commit comments

Comments
 (0)