| 
					
				 | 
			
			
				@@ -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")); 
			 |