forked from punker76/gong-wpf-dragdrop
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.cake
132 lines (108 loc) · 4.09 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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
//////////////////////////////////////////////////////////////////////
// TOOLS
//////////////////////////////////////////////////////////////////////
#tool "nuget:?package=GitVersion.CommandLine&version=3.6.5"
#tool "nuget:?package=vswhere&version=2.2.7"
//////////////////////////////////////////////////////////////////////
// ARGUMENTS
//////////////////////////////////////////////////////////////////////
var target = Argument("target", "Default");
if (string.IsNullOrWhiteSpace(target))
{
target = "Default";
}
//////////////////////////////////////////////////////////////////////
// PREPARATION
//////////////////////////////////////////////////////////////////////
// Build configuration
var local = BuildSystem.IsLocalBuild;
var isPullRequest = AppVeyor.Environment.PullRequest.IsPullRequest;
var isDevelopBranch = StringComparer.OrdinalIgnoreCase.Equals("dev", AppVeyor.Environment.Repository.Branch);
var isReleaseBranch = StringComparer.OrdinalIgnoreCase.Equals("master", AppVeyor.Environment.Repository.Branch);
var isTagged = AppVeyor.Environment.Repository.Tag?.IsTag;
var githubOwner = "punker76";
var githubRepository = "gong-wpf-dragdrop";
var githubUrl = string.Format("https://github.com/{0}/{1}", githubOwner, githubRepository);
// Version
var gitVersion = GitVersion(new GitVersionSettings {
UpdateAssemblyInfo = true,
UpdateAssemblyInfoFilePath = "./src/GlobalAssemblyInfo.cs",
OutputType = GitVersionOutput.BuildServer
});
var majorMinorPatch = gitVersion.MajorMinorPatch;
var informationalVersion = gitVersion.InformationalVersion;
var nugetVersion = gitVersion.NuGetVersion;
var buildVersion = gitVersion.FullBuildMetaData;
// Define global marcos.
Action Abort = () => { throw new Exception("a non-recoverable fatal error occurred."); };
var nuGetPackSettings = new NuGetPackSettings {
Version = nugetVersion,
BasePath = "./src/bin/GongSolutions.WPF.DragDrop/",
OutputDirectory = "./Build",
Id = "gong-wpf-dragdrop",
Title = "gong-wpf-dragdrop",
Copyright = string.Format("Copyright © GongSolutions.WPF.DragDrop 2013 - {0}", DateTime.Now.Year)
};
///////////////////////////////////////////////////////////////////////////////
// SETUP / TEARDOWN
///////////////////////////////////////////////////////////////////////////////
Setup(context =>
{
if (!IsRunningOnWindows())
{
throw new NotImplementedException("gong-wpf-dragdrop will only build on Windows because it's not possible to target WPF and Windows Forms from UNIX.");
}
Information("Building version {0} of gong-wpf-dragdrop. (isTagged: {1})", informationalVersion, isTagged);
});
Teardown(context =>
{
// Executed AFTER the last task.
});
//////////////////////////////////////////////////////////////////////
// TASKS
//////////////////////////////////////////////////////////////////////
Task("Build")
.Does(() =>
{
MSBuild("./src/GongSolutions.WPF.DragDrop.sln", settings => settings.SetConfiguration("Release").UseToolVersion(MSBuildToolVersion.VS2017));
});
Task("Build_Debug")
.Does(() =>
{
MSBuild("./src/GongSolutions.WPF.DragDrop.sln", settings => settings.SetConfiguration("Debug").UseToolVersion(MSBuildToolVersion.VS2017));
});
Task("NuGetPack")
.Does(() =>
{
NuGetPack("./Build/GongSolutions.Wpf.DragDrop.nuspec", nuGetPackSettings);
});
Task("ZipShowcase")
.Does(() =>
{
Zip("./src/bin/Showcase.WPF.DragDrop/Release_NET45/", "./Build/Showcase.WPF.DragDrop." + nugetVersion + ".zip");
});
Task("ZipShowcase_Debug")
.Does(() =>
{
Zip("./src/bin/Showcase.WPF.DragDrop/Debug_NET45/", "./Build/Showcase.WPF.DragDrop.Debug." + nugetVersion + ".zip");
});
Task("CleanOutput")
.ContinueOnError()
.Does(() =>
{
CleanDirectories("./src/bin");
});
// Task Targets
Task("Default")
.IsDependentOn("CleanOutput")
.IsDependentOn("Build_Debug").IsDependentOn("Build")
.IsDependentOn("ZipShowcase_Debug").IsDependentOn("ZipShowcase");
Task("Release")
.IsDependentOn("CleanOutput")
.IsDependentOn("Build")
.IsDependentOn("ZipShowcase");
Task("Appveyor")
.IsDependentOn("Release")
.IsDependentOn("NuGetPack");
// Execution
RunTarget(target);