mirror of
				https://github.com/spectreconsole/spectre.console.git
				synced 2025-10-25 15:19:23 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			158 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			158 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| var target = Argument("target", "Default");
 | |
| var configuration = Argument("configuration", "Release");
 | |
| 
 | |
| ////////////////////////////////////////////////////////////////
 | |
| // Tasks
 | |
| 
 | |
| Task("Clean")
 | |
|     .Does(context =>
 | |
| {
 | |
|     context.CleanDirectory("./.artifacts");
 | |
| });
 | |
| 
 | |
| Task("Build")
 | |
|     .IsDependentOn("Clean")
 | |
|     .Does(context => 
 | |
| {
 | |
|     DotNetBuild("./src/Spectre.Console.sln", new DotNetBuildSettings {
 | |
|         Configuration = configuration,
 | |
|         NoIncremental = context.HasArgument("rebuild"),
 | |
|         MSBuildSettings = new DotNetCoreMSBuildSettings()
 | |
|             .TreatAllWarningsAs(MSBuildTreatAllWarningsAs.Error)
 | |
|     });
 | |
| });
 | |
| 
 | |
| Task("Build-Analyzer")
 | |
|     .IsDependentOn("Build")
 | |
|     .Does(context => 
 | |
| {
 | |
|     DotNetBuild("./src/Spectre.Console.Analyzer.sln", new DotNetBuildSettings {
 | |
|         Configuration = configuration,
 | |
|         NoIncremental = context.HasArgument("rebuild"),
 | |
|         MSBuildSettings = new DotNetCoreMSBuildSettings()
 | |
|             .TreatAllWarningsAs(MSBuildTreatAllWarningsAs.Error)
 | |
|     });
 | |
| });
 | |
| 
 | |
| Task("Build-Examples")
 | |
|     .IsDependentOn("Build")
 | |
|     .Does(context => 
 | |
| {
 | |
|     DotNetBuild("./examples/Examples.sln", new DotNetBuildSettings {
 | |
|         Configuration = configuration,
 | |
|         NoIncremental = context.HasArgument("rebuild"),
 | |
|         MSBuildSettings = new DotNetCoreMSBuildSettings()
 | |
|             .TreatAllWarningsAs(MSBuildTreatAllWarningsAs.Error)
 | |
|     });
 | |
| });
 | |
| 
 | |
| Task("Test")
 | |
|     .IsDependentOn("Build")
 | |
|     .IsDependentOn("Build-Analyzer")
 | |
|     .IsDependentOn("Build-Examples")
 | |
|     .Does(context => 
 | |
| {
 | |
|     DotNetTest("./test/Spectre.Console.Tests/Spectre.Console.Tests.csproj", new DotNetTestSettings {
 | |
|         Configuration = configuration,
 | |
|         NoRestore = true,
 | |
|         NoBuild = true,
 | |
|     });
 | |
| 
 | |
|     DotNetTest("./test/Spectre.Console.Analyzer.Tests/Spectre.Console.Analyzer.Tests.csproj", new DotNetTestSettings {
 | |
|         Configuration = configuration,
 | |
|         NoRestore = true,
 | |
|         NoBuild = true,
 | |
|     });
 | |
| });
 | |
| 
 | |
| Task("Package")
 | |
|     .IsDependentOn("Test")
 | |
|     .Does(context => 
 | |
| {
 | |
|     context.DotNetPack($"./src/Spectre.Console.sln", new DotNetPackSettings {
 | |
|         Configuration = configuration,
 | |
|         NoRestore = true,
 | |
|         NoBuild = true,
 | |
|         OutputDirectory = "./.artifacts",
 | |
|         MSBuildSettings = new DotNetCoreMSBuildSettings()
 | |
|             .TreatAllWarningsAs(MSBuildTreatAllWarningsAs.Error)
 | |
|     });
 | |
| 
 | |
|     context.DotNetPack($"./src/Spectre.Console.Analyzer.sln", new DotNetPackSettings {
 | |
|         Configuration = configuration,
 | |
|         NoRestore = true,
 | |
|         NoBuild = true,
 | |
|         OutputDirectory = "./.artifacts",
 | |
|         MSBuildSettings = new DotNetCoreMSBuildSettings()
 | |
|             .TreatAllWarningsAs(MSBuildTreatAllWarningsAs.Error)
 | |
|     });
 | |
| });
 | |
| 
 | |
| Task("Publish-GitHub")
 | |
|     .WithCriteria(ctx => BuildSystem.IsRunningOnGitHubActions, "Not running on GitHub Actions")
 | |
|     .IsDependentOn("Package")
 | |
|     .Does(context => 
 | |
| {
 | |
|     var apiKey = Argument<string>("github-key", null);
 | |
|     if(string.IsNullOrWhiteSpace(apiKey)) {
 | |
|         throw new CakeException("No GitHub API key was provided.");
 | |
|     }
 | |
| 
 | |
|     // Publish to GitHub Packages
 | |
|     var exitCode = 0;
 | |
|     foreach(var file in context.GetFiles("./.artifacts/*.nupkg")) 
 | |
|     {
 | |
|         context.Information("Publishing {0}...", file.GetFilename().FullPath);
 | |
|         exitCode += StartProcess("dotnet", 
 | |
|             new ProcessSettings {
 | |
|                 Arguments = new ProcessArgumentBuilder()
 | |
|                     .Append("gpr")
 | |
|                     .Append("push")
 | |
|                     .AppendQuoted(file.FullPath)
 | |
|                     .AppendSwitchSecret("-k", " ", apiKey)
 | |
|             }
 | |
|         );
 | |
|     }
 | |
| 
 | |
|     if(exitCode != 0) 
 | |
|     {
 | |
|         throw new CakeException("Could not push GitHub packages.");
 | |
|     }
 | |
| });
 | |
| 
 | |
| Task("Publish-NuGet")
 | |
|     .WithCriteria(ctx => BuildSystem.IsRunningOnGitHubActions, "Not running on GitHub Actions")
 | |
|     .IsDependentOn("Package")
 | |
|     .Does(context => 
 | |
| {
 | |
|     var apiKey = Argument<string>("nuget-key", null);
 | |
|     if(string.IsNullOrWhiteSpace(apiKey)) {
 | |
|         throw new CakeException("No NuGet API key was provided.");
 | |
|     }
 | |
| 
 | |
|     // Publish to GitHub Packages
 | |
|     foreach(var file in context.GetFiles("./.artifacts/*.nupkg")) 
 | |
|     {
 | |
|         context.Information("Publishing {0}...", file.GetFilename().FullPath);
 | |
|         DotNetNuGetPush(file.FullPath, new DotNetNuGetPushSettings
 | |
|         {
 | |
|             Source = "https://api.nuget.org/v3/index.json",
 | |
|             ApiKey = apiKey,
 | |
|         });
 | |
|     }
 | |
| });
 | |
| 
 | |
| ////////////////////////////////////////////////////////////////
 | |
| // Targets
 | |
| 
 | |
| Task("Publish")
 | |
|     .IsDependentOn("Publish-GitHub")
 | |
|     .IsDependentOn("Publish-NuGet");
 | |
| 
 | |
| Task("Default")
 | |
|     .IsDependentOn("Package");
 | |
| 
 | |
| ////////////////////////////////////////////////////////////////
 | |
| // Execution
 | |
| 
 | |
| RunTarget(target) |