Browse Source

Update to Cake 0.28

Jeremy Koritzinsky 7 years ago
parent
commit
2f1c94ef30
3 changed files with 89 additions and 79 deletions
  1. 88 76
      build.cake
  2. 0 2
      parameters.cake
  3. 1 1
      tools/packages.config

+ 88 - 76
build.cake

@@ -34,20 +34,31 @@ using NuGet;
 // PARAMETERS
 //////////////////////////////////////////////////////////////////////
 
-Parameters parameters = new Parameters(Context);
-Packages packages = new Packages(Context, parameters);
+class AvaloniaBuildData
+{
+    public AvaloniaBuildData(Parameters parameters, Packages packages)
+    {
+        Parameters = parameters;
+        Packages = packages;
+    }
+
+    public Parameters Parameters { get; }
+    public Packages Packages { get; }
+}
 
 ///////////////////////////////////////////////////////////////////////////////
 // SETUP
 ///////////////////////////////////////////////////////////////////////////////
 
-Setup(context =>
+Setup<AvaloniaBuildData>(context =>
 {
-    Information("Building version {0} of Avalonia ({1}, {2}, {3}) using version {4} of Cake.", 
+    var parameters = new Parameters(context);
+    var buildContext = new AvaloniaBuildData(parameters, new Packages(context, parameters));
+
+    Information("Building version {0} of Avalonia ({1}, {2}) using version {3} of Cake.", 
         parameters.Version,
         parameters.Platform,
         parameters.Configuration,
-        parameters.Target,
         typeof(ICakeContext).Assembly.GetName().Version.ToString());
 
     if (parameters.IsRunningOnAppVeyor)
@@ -55,8 +66,7 @@ Setup(context =>
         Information("Repository Name: " + BuildSystem.AppVeyor.Environment.Repository.Name);
         Information("Repository Branch: " + BuildSystem.AppVeyor.Environment.Repository.Branch);
     }
-
-    Information("Target: " + parameters.Target);
+    Information("Target:" + context.TargetTask.Name);
     Information("Platform: " + parameters.Platform);
     Information("Configuration: " + parameters.Configuration);
     Information("IsLocalBuild: " + parameters.IsLocalBuild);
@@ -70,13 +80,15 @@ Setup(context =>
     Information("IsReleasable: " + parameters.IsReleasable);
     Information("IsMyGetRelease: " + parameters.IsMyGetRelease);
     Information("IsNuGetRelease: " + parameters.IsNuGetRelease);
+
+    return buildContext;
 });
 
 ///////////////////////////////////////////////////////////////////////////////
 // TEARDOWN
 ///////////////////////////////////////////////////////////////////////////////
 
-Teardown(context =>
+Teardown<AvaloniaBuildData>((context, buildContext) =>
 {
     Information("Finished running tasks.");
 });
@@ -86,19 +98,19 @@ Teardown(context =>
 ///////////////////////////////////////////////////////////////////////////////
 
 Task("Clean")
-    .Does(() =>
+    .Does<AvaloniaBuildData>(data =>
 {
-    CleanDirectories(parameters.BuildDirs);
-    CleanDirectory(parameters.ArtifactsDir);
-    CleanDirectory(parameters.NugetRoot);
-    CleanDirectory(parameters.ZipRoot);
-    CleanDirectory(parameters.BinRoot);
+    CleanDirectories(data.Parameters.BuildDirs);
+    CleanDirectory(data.Parameters.ArtifactsDir);
+    CleanDirectory(data.Parameters.NugetRoot);
+    CleanDirectory(data.Parameters.ZipRoot);
+    CleanDirectory(data.Parameters.BinRoot);
 });
 
 Task("Restore-NuGet-Packages")
     .IsDependentOn("Clean")
-    .WithCriteria(parameters.IsRunningOnWindows)
-    .Does(() =>
+    .WithCriteria<AvaloniaBuildData>((context, data) => data.Parameters.IsRunningOnWindows)
+    .Does<AvaloniaBuildData>(data =>
 {
     var maxRetryCount = 5;
     var toolTimeout = 2d;
@@ -115,13 +127,13 @@ Task("Restore-NuGet-Packages")
                 toolTimeout+=0.5;
             }})
         .Execute(()=> {
-                NuGetRestore(parameters.MSBuildSolution, new NuGetRestoreSettings {
+                NuGetRestore(data.Parameters.MSBuildSolution, new NuGetRestoreSettings {
                     ToolTimeout = TimeSpan.FromMinutes(toolTimeout)
                 });
         });
 });
 
-void DotNetCoreBuild()
+void DotNetCoreBuild(Parameters parameters)
 {
     var settings = new DotNetCoreBuildSettings 
     {
@@ -137,14 +149,14 @@ void DotNetCoreBuild()
 
 Task("Build")
     .IsDependentOn("Restore-NuGet-Packages")
-    .Does(() =>
+    .Does<AvaloniaBuildData>(data =>
 {
-    if(parameters.IsRunningOnWindows)
+    if(data.Parameters.IsRunningOnWindows)
     {
-        MSBuild(parameters.MSBuildSolution, settings => {
-            settings.SetConfiguration(parameters.Configuration);
+        MSBuild(data.Parameters.MSBuildSolution, settings => {
+            settings.SetConfiguration(data.Parameters.Configuration);
             settings.SetVerbosity(Verbosity.Minimal);
-            settings.WithProperty("Platform", "\"" + parameters.Platform + "\"");
+            settings.WithProperty("Platform", "\"" + data.Parameters.Platform + "\"");
             settings.WithProperty("UseRoslynPathHack", "true");
             settings.UseToolVersion(MSBuildToolVersion.VS2017);
             settings.WithProperty("Windows", "True");
@@ -154,7 +166,7 @@ Task("Build")
     }
     else
     {
-        DotNetCoreBuild();
+        DotNetCoreBuild(data.Parameters);
     }
 });
 
@@ -185,66 +197,66 @@ Task("Run-Unit-Tests")
     .IsDependentOn("Build")
     .IsDependentOn("Run-Designer-Tests")
     .IsDependentOn("Run-Render-Tests")
-    .WithCriteria(() => !parameters.SkipTests)
-    .Does(() => {
-        RunCoreTest("./tests/Avalonia.Base.UnitTests", parameters, false);
-        RunCoreTest("./tests/Avalonia.Controls.UnitTests", parameters, false);
-        RunCoreTest("./tests/Avalonia.Input.UnitTests", parameters, false);
-        RunCoreTest("./tests/Avalonia.Interactivity.UnitTests", parameters, false);
-        RunCoreTest("./tests/Avalonia.Layout.UnitTests", parameters, false);
-        RunCoreTest("./tests/Avalonia.Markup.UnitTests", parameters, false);
-        RunCoreTest("./tests/Avalonia.Markup.Xaml.UnitTests", parameters, false);
-        RunCoreTest("./tests/Avalonia.Styling.UnitTests", parameters, false);
-        RunCoreTest("./tests/Avalonia.Visuals.UnitTests", parameters, false);
-        if (parameters.IsRunningOnWindows)
+    .WithCriteria<AvaloniaBuildData>((context, data) => !data.Parameters.SkipTests)
+    .Does<AvaloniaBuildData>(data => {
+        RunCoreTest("./tests/Avalonia.Base.UnitTests", data.Parameters, false);
+        RunCoreTest("./tests/Avalonia.Controls.UnitTests", data.Parameters, false);
+        RunCoreTest("./tests/Avalonia.Input.UnitTests", data.Parameters, false);
+        RunCoreTest("./tests/Avalonia.Interactivity.UnitTests", data.Parameters, false);
+        RunCoreTest("./tests/Avalonia.Layout.UnitTests", data.Parameters, false);
+        RunCoreTest("./tests/Avalonia.Markup.UnitTests", data.Parameters, false);
+        RunCoreTest("./tests/Avalonia.Markup.Xaml.UnitTests", data.Parameters, false);
+        RunCoreTest("./tests/Avalonia.Styling.UnitTests", data.Parameters, false);
+        RunCoreTest("./tests/Avalonia.Visuals.UnitTests", data.Parameters, false);
+        if (data.Parameters.IsRunningOnWindows)
         {
-            RunCoreTest("./tests/Avalonia.Direct2D1.UnitTests", parameters, true);
+            RunCoreTest("./tests/Avalonia.Direct2D1.UnitTests", data.Parameters, true);
         }
     });
 
 Task("Run-Designer-Tests")
     .IsDependentOn("Build")
-    .WithCriteria(() => !parameters.SkipTests)
-    .Does(() => {
-        RunCoreTest("./tests/Avalonia.DesignerSupport.Tests", parameters, false);
+    .WithCriteria<AvaloniaBuildData>((context, data) => !data.Parameters.SkipTests)
+    .Does<AvaloniaBuildData>(data => {
+        RunCoreTest("./tests/Avalonia.DesignerSupport.Tests", data.Parameters, false);
     });
 
 Task("Run-Render-Tests")
     .IsDependentOn("Build")
-    .WithCriteria(() => !parameters.SkipTests && parameters.IsRunningOnWindows)
-    .Does(() => {
-        RunCoreTest("./tests/Avalonia.Skia.RenderTests/Avalonia.Skia.RenderTests.csproj", parameters, true);
-        RunCoreTest("./tests/Avalonia.Direct2D1.RenderTests/Avalonia.Direct2D1.RenderTests.csproj", parameters, true);
+    .WithCriteria<AvaloniaBuildData>((context, data) => !data.Parameters.SkipTests && data.Parameters.IsRunningOnWindows)
+    .Does<AvaloniaBuildData>(data => {
+        RunCoreTest("./tests/Avalonia.Skia.RenderTests/Avalonia.Skia.RenderTests.csproj", data.Parameters, true);
+        RunCoreTest("./tests/Avalonia.Direct2D1.RenderTests/Avalonia.Direct2D1.RenderTests.csproj", data.Parameters, true);
     });
 
 Task("Copy-Files")
     .IsDependentOn("Run-Unit-Tests")
-    .Does(() =>
+    .Does<AvaloniaBuildData>(data =>
 {
-    CopyFiles(packages.BinFiles, parameters.BinRoot);
+    CopyFiles(data.Packages.BinFiles, data.Parameters.BinRoot);
 });
 
 Task("Zip-Files")
     .IsDependentOn("Copy-Files")
-    .Does(() =>
+    .Does<AvaloniaBuildData>(data =>
 {
-    Zip(parameters.BinRoot, parameters.ZipCoreArtifacts);
-
-    Zip(parameters.ZipSourceControlCatalogDesktopDirs, 
-        parameters.ZipTargetControlCatalogDesktopDirs, 
-        GetFiles(parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.dll") + 
-        GetFiles(parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.config") + 
-        GetFiles(parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.so") + 
-        GetFiles(parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.dylib") + 
-        GetFiles(parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.exe"));
+    Zip(data.Parameters.BinRoot, data.Parameters.ZipCoreArtifacts);
+
+    Zip(data.Parameters.ZipSourceControlCatalogDesktopDirs, 
+        data.Parameters.ZipTargetControlCatalogDesktopDirs, 
+        GetFiles(data.Parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.dll") + 
+        GetFiles(data.Parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.config") + 
+        GetFiles(data.Parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.so") + 
+        GetFiles(data.Parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.dylib") + 
+        GetFiles(data.Parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.exe"));
 });
 
 Task("Create-NuGet-Packages")
     .IsDependentOn("Run-Unit-Tests")
     .IsDependentOn("Inspect")
-    .Does(() =>
+    .Does<AvaloniaBuildData>(data =>
 {
-    foreach(var nuspec in packages.NuspecNuGetSettings)
+    foreach(var nuspec in data.Packages.NuspecNuGetSettings)
     {
         NuGetPack(nuspec);
     }
@@ -252,12 +264,12 @@ Task("Create-NuGet-Packages")
 
 Task("Publish-MyGet")
     .IsDependentOn("Create-NuGet-Packages")
-    .WithCriteria(() => !parameters.IsLocalBuild)
-    .WithCriteria(() => !parameters.IsPullRequest)
-    .WithCriteria(() => parameters.IsMainRepo)
-    .WithCriteria(() => parameters.IsMasterBranch)
-    .WithCriteria(() => parameters.IsMyGetRelease)
-    .Does(() =>
+    .WithCriteria<AvaloniaBuildData>((context, data) => !data.Parameters.IsLocalBuild)
+    .WithCriteria<AvaloniaBuildData>((context, data) => !data.Parameters.IsPullRequest)
+    .WithCriteria<AvaloniaBuildData>((context, data) => data.Parameters.IsMainRepo)
+    .WithCriteria<AvaloniaBuildData>((context, data) => data.Parameters.IsMasterBranch)
+    .WithCriteria<AvaloniaBuildData>((context, data) => data.Parameters.IsMyGetRelease)
+    .Does<AvaloniaBuildData>(data =>
 {
     var apiKey = EnvironmentVariable("MYGET_API_KEY");
     if(string.IsNullOrEmpty(apiKey)) 
@@ -271,7 +283,7 @@ Task("Publish-MyGet")
         throw new InvalidOperationException("Could not resolve MyGet API url.");
     }
 
-    foreach(var nupkg in packages.NugetPackages)
+    foreach(var nupkg in data.Packages.NugetPackages)
     {
         NuGetPush(nupkg, new NuGetPushSettings {
             Source = apiUrl,
@@ -286,11 +298,11 @@ Task("Publish-MyGet")
 
 Task("Publish-NuGet")
     .IsDependentOn("Create-NuGet-Packages")
-    .WithCriteria(() => !parameters.IsLocalBuild)
-    .WithCriteria(() => !parameters.IsPullRequest)
-    .WithCriteria(() => parameters.IsMainRepo)
-    .WithCriteria(() => parameters.IsNuGetRelease)
-    .Does(() =>
+    .WithCriteria<AvaloniaBuildData>((context, data) => !data.Parameters.IsLocalBuild)
+    .WithCriteria<AvaloniaBuildData>((context, data) => !data.Parameters.IsPullRequest)
+    .WithCriteria<AvaloniaBuildData>((context, data) => data.Parameters.IsMainRepo)
+    .WithCriteria<AvaloniaBuildData>((context, data) => data.Parameters.IsNuGetRelease)
+    .Does<AvaloniaBuildData>(data =>
 {
     var apiKey = EnvironmentVariable("NUGET_API_KEY");
     if(string.IsNullOrEmpty(apiKey)) 
@@ -304,7 +316,7 @@ Task("Publish-NuGet")
         throw new InvalidOperationException("Could not resolve NuGet API url.");
     }
 
-    foreach(var nupkg in packages.NugetPackages)
+    foreach(var nupkg in data.Packages.NugetPackages)
     {
         NuGetPush(nupkg, new NuGetPushSettings {
             ApiKey = apiKey,
@@ -318,7 +330,7 @@ Task("Publish-NuGet")
 });
 
 Task("Run-Leak-Tests")
-    .WithCriteria(parameters.IsRunningOnWindows)
+    .WithCriteria<AvaloniaBuildData>((context, data) => data.Parameters.IsRunningOnWindows)
     .IsDependentOn("Build")
     .Does(() =>
     {
@@ -358,7 +370,7 @@ Task("Run-Leak-Tests")
     });
 
 Task("Inspect")
-    .WithCriteria(parameters.IsRunningOnWindows)
+    .WithCriteria<AvaloniaBuildData>((context, data) => data.Parameters.IsRunningOnWindows)
     .IsDependentOn("Restore-NuGet-Packages")
     .Does(() =>
     {
@@ -396,9 +408,9 @@ Task("Inspect")
 Task("Package")
   .IsDependentOn("Create-NuGet-Packages");
 
-Task("Default").Does(() =>
+Task("Default").Does<AvaloniaBuildData>(data =>
 {
-    if(parameters.IsRunningOnWindows)
+    if(data.Parameters.IsRunningOnWindows)
         RunTarget("Package");
     else
         RunTarget("Run-Unit-Tests");
@@ -415,4 +427,4 @@ Task("Travis")
 // EXECUTE
 ///////////////////////////////////////////////////////////////////////////////
 
-RunTarget(parameters.Target);
+RunTarget(Context.Argument("target", "Default"));

+ 0 - 2
parameters.cake

@@ -1,6 +1,5 @@
 public class Parameters
 {
-    public string Target { get; private set; }
     public string Platform { get; private set; }
     public string Configuration { get; private set; }
     public bool SkipTests { get; private set; }
@@ -43,7 +42,6 @@ public class Parameters
         var buildSystem = context.BuildSystem();
 
         // ARGUMENTS
-        Target = context.Argument("target", "Default");
         Platform = context.Argument("platform", "Any CPU");
         Configuration = context.Argument("configuration", "Release");
         SkipTests = context.HasArgument("skip-tests");

+ 1 - 1
tools/packages.config

@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <packages>
-    <package id="Cake" version="0.25.0" />
+    <package id="Cake" version="0.28.0" />
 </packages>