@@ -5,7 +5,12 @@ using System.Threading.Tasks;
5
5
var target = Argument ( "target" , "Default" ) ;
6
6
var exercise = Argument < string > ( "exercise" , null ) ;
7
7
8
- var sourceDir = "./exercises" ;
8
+ var exercisesSourceDir = "./exercises" ;
9
+ var exercisesBuildDir = "./build/exercises" ;
10
+
11
+ var generatorsSourceDir = "./generators" ;
12
+ var generatorsBuildDir = "./build/generators" ;
13
+
9
14
var buildDir = "./build" ;
10
15
11
16
var parallelOptions = new ParallelOptions
@@ -19,17 +24,23 @@ Task("Clean")
19
24
} ) ;
20
25
21
26
// Copy everything to build so we make no changes in the actual files.
27
+ Task ( "CopyGenerators" )
28
+ . Does ( ( ) => {
29
+ CopyDirectory ( $ "{ generatorsSourceDir } /", $ "{ generatorsBuildDir } ") ;
30
+ } ) ;
31
+
22
32
Task ( "CopyExercises" )
23
33
. IsDependentOn ( "Clean" )
34
+ . IsDependentOn ( "CopyGenerators" )
24
35
. Does ( ( ) => {
25
- CopyDirectory ( $ "{ sourceDir } /{ exercise } ", $ "{ buildDir } /{ exercise } ") ;
36
+ CopyDirectory ( $ "{ exercisesSourceDir } /{ exercise } ", $ "{ exercisesBuildDir } /{ exercise } ") ;
26
37
} ) ;
27
38
28
39
Task ( "EnableAllTests" )
29
40
. IsDependentOn ( "CopyExercises" )
30
41
. Does ( ( ) => {
31
42
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" ) ;
33
44
34
45
foreach ( var testFile in testFiles ) {
35
46
var contents = System . IO . File . ReadAllText ( testFile . FullPath ) ;
@@ -47,17 +58,17 @@ Task("TestRefactoringProjects")
47
58
// These projects have a working default implementation, and have
48
59
// all the tests enabled. These should pass without any changes.
49
60
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" ) ;
53
64
54
65
Parallel . ForEach ( refactoringProjects , parallelOptions , ( project ) => DotNetCoreTest ( project . FullPath ) ) ;
55
66
} ) ;
56
67
57
68
Task ( "ReplaceStubWithExample" )
58
69
. IsDependentOn ( "TestRefactoringProjects" )
59
70
. Does ( ( ) => {
60
- var allProjects = GetFiles ( buildDir + "/*/*.csproj" ) ;
71
+ var allProjects = GetFiles ( exercisesBuildDir + "/*/*.csproj" ) ;
61
72
62
73
foreach ( var project in allProjects ) {
63
74
var projectDir = project . GetDirectory ( ) ;
@@ -73,12 +84,21 @@ Task("ReplaceStubWithExample")
73
84
Task ( "TestUsingExampleImplementation" )
74
85
. IsDependentOn ( "ReplaceStubWithExample" )
75
86
. Does ( ( ) => {
76
- var allProjects = GetFiles ( buildDir + "/*/*.csproj" ) ;
87
+ var allProjects = GetFiles ( exercisesBuildDir + "/*/*.csproj" ) ;
77
88
Parallel . ForEach ( allProjects , parallelOptions , ( project ) => DotNetCoreTest ( project . FullPath ) ) ;
78
89
} ) ;
79
90
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
+
80
99
Task ( "Default" )
81
100
. IsDependentOn ( "TestUsingExampleImplementation" )
101
+ . IsDependentOn ( "BuildGeneratorsSolution" )
82
102
. Does ( ( ) => { } ) ;
83
103
84
104
RunTarget ( target ) ;
0 commit comments