-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProgram.vb
134 lines (118 loc) · 6.35 KB
/
Program.vb
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
132
133
134
Imports System
Imports System.Linq
Imports CakeBridge
Imports Cake.Core
Imports Cake.Core.Diagnostics
Imports Cake.Core.IO
Imports Cake.Common
Imports Cake.Common.IO
Imports Cake.Common.Diagnostics
Imports Cake.Common.Tools.DotNetCore
Imports Cake.Common.Tools.DotNetCore.Build
Imports Cake.Common.Tools.DotNetCore.Pack
Imports Cake.Common.Tools.DotNetCore.Restore
Imports Cake.Common.Tools.DotNetCore.Test
Module Program
Sub Main()
'//////////////////////////////////////////////////////////////////////
'// ARGUMENTS
'//////////////////////////////////////////////////////////////////////
Dim target = Context.Argument("target", "Default"),
configuration = Context.Argument("configuration", "Release")
'//////////////////////////////////////////////////////////////////////
'// GLOBALS
'//////////////////////////////////////////////////////////////////////
Dim nugetRoot As DirectoryPath = Nothing,
solution As FilePath = Nothing,
solutionDir As DirectoryPath = Nothing,
semVersion As String = Nothing,
assemblyVersion As String = Nothing,
fileVersion As String = Nothing
'//////////////////////////////////////////////////////////////////////
'// SETUP / TEARDOWN
'//////////////////////////////////////////////////////////////////////
Setup(
Sub(ctx As ICakeContext)
ctx.Information("Setting up...")
solution = ctx.GetFiles("./src/*.sln").Select(Function(file as FilePath) ctx.MakeAbsolute(file)).FirstOrDefault()
If solution Is Nothing Then
Throw New Exception("Failed to find solution")
End If
solutionDir = solution.GetDirectory()
nugetRoot = ctx.MakeAbsolute(ctx.Directory("./nuget"))
Dim releaseNotes = ctx.ParseReleaseNotes("./ReleaseNotes.md")
assemblyVersion = releaseNotes.Version.ToString()
fileVersion = assemblyVersion
semVersion = $"{assemblyVersion}-alpha"
ctx.Information("Executing build {0}...", semVersion)
End Sub
)
Teardown(
Sub(ctx As ITeardownContext) ctx.Information("Tearing down...")
)
'//////////////////////////////////////////////////////////////////////
'// TASKS
'//////////////////////////////////////////////////////////////////////
Dim cleanTask = Task("Clean").Does(
Sub()
Context.CleanDirectories($"{solutionDir.FullPath}/**/bin/{configuration}")
Context.CleanDirectories($"{solutionDir.FullPath}/**/obj/{configuration}")
Context.CleanDirectory(nugetRoot)
End Sub
)
Dim restoreTask = Task("Restore").Does(
Sub() Context.DotNetCoreRestore(solution.FullPath,
New DotNetCoreRestoreSettings With {
.Sources = {"https://api.nuget.org/v3/index.json"}
})
).IsDependentOn(cleanTask)
Dim buildTask = Task("Build").Does(
Sub() Context.DotNetCoreBuild(solution.FullPath,
New DotNetCoreBuildSettings With {
.Configuration = configuration,
.ArgumentCustomization = Function(args) args.Append(
"/p:Version={0}", semVersion
).Append(
"/p:AssemblyVersion={0}", assemblyVersion
).Append(
"/p:FileVersion={0}", fileVersion
)
})
).IsDependentOn(restoreTask)
Dim testTask = Task("Test").Does(
Sub()
For Each project In Context.GetFiles("./src/**/*.Tests.vbproj")
Context.DotNetCoreTest(project.FullPath,
New DotNetCoreTestSettings With {
.Configuration = configuration,
.NoBuild = True
})
Next
End Sub
).IsDependentOn(buildTask)
Dim packTask = Task("Pack").Does(
Sub()
For Each project In (Context.GetFiles("./src/**/*.vbproj") - Context.GetFiles("./src/**/*.Tests.vbproj"))
Context.DotNetCorePack(project.FullPath,
New DotNetCorePackSettings With {
.Configuration = configuration,
.OutputDirectory = nugetRoot,
.NoBuild = True,
.ArgumentCustomization = Function(args) args.Append(
"/p:Version={0}", semVersion
).Append(
"/p:AssemblyVersion={0}", assemblyVersion
).Append(
"/p:FileVersion={0}", fileVersion
)
})
Next
End Sub
).IsDependentOn(testTask)
Task("Default").IsDependentOn(packTask)
'//////////////////////////////////////////////////////////////////////
'// EXECUTION
'//////////////////////////////////////////////////////////////////////
RunTarget(target)
End Sub
End Module