diff --git a/.appveyor.yml b/.appveyor.yml index d6d8f8ff..da39386b 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -13,6 +13,7 @@ install: - ps: '& "$($env:DOTNET_INSTALL_DIR)/dotnet-install.ps1" -Version 5.0.408 -InstallDir $env:DOTNET_INSTALL_DIR' - ps: '& "$($env:DOTNET_INSTALL_DIR)/dotnet-install.ps1" -Version 6.0.411 -InstallDir $env:DOTNET_INSTALL_DIR' - ps: '& "$($env:DOTNET_INSTALL_DIR)/dotnet-install.ps1" -Version 7.0.305 -InstallDir $env:DOTNET_INSTALL_DIR' + - ps: '& "$($env:DOTNET_INSTALL_DIR)/dotnet-install.ps1" -Version 8.0.100 -InstallDir $env:DOTNET_INSTALL_DIR' - ps: $env:Path = "$env:DOTNET_INSTALL_DIR;$env:Path" - ps: dotnet --info - ps: Install-Product node 14 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9c44de0d..bf5c6485 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,22 +7,23 @@ jobs: runs-on: windows-2022 steps: - name: Get the sources - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - name: Fetch all tags and branches run: git fetch --prune --unshallow - name: Install .NET - uses: actions/setup-dotnet@3447fd6a9f9e57506b15f895c5b76d3b197dc7c2 # v3 + uses: actions/setup-dotnet@4d6c8fcf3c8f7a60068d26b594648e99df24cee3 # v4 with: # .NET 5 required for GitVersion dotnet-version: | 5.x 6.x 7.x + 8.x - name: Build run: .\build.ps1 shell: powershell - name: Publish NuGet package as build artifact - uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3 + uses: actions/upload-artifact@c7d193f32edcb7bfad88892161225aeda64e9392 # v4 with: name: NuGet Package path: ./BuildArtifacts/Packages/NuGet/ @@ -33,17 +34,17 @@ jobs: runs-on: windows-2019 steps: - name: Get the sources - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - name: Install required tools run: npm install -g markdownlint-cli shell: powershell - name: Download build artifact - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3 + uses: actions/download-artifact@7a1cd3216ca9260cd8022db641d960b1db4d1be4 # v4 with: name: NuGet Package path: ./BuildArtifacts/Packages/NuGet - name: Install .NET - uses: actions/setup-dotnet@3447fd6a9f9e57506b15f895c5b76d3b197dc7c2 # v3 + uses: actions/setup-dotnet@4d6c8fcf3c8f7a60068d26b594648e99df24cee3 # v4 with: dotnet-version: | 6.x @@ -52,7 +53,7 @@ jobs: working-directory: ./tests/script-runner/ shell: powershell - name: Publish generated reports as build artifact - uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3 + uses: actions/upload-artifact@c7d193f32edcb7bfad88892161225aeda64e9392 # v4 with: name: Integration Tests Script Runner Windows (.NET Core tool) path: ./tests/script-runner/BuildArtifacts/output/ diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/BuildServers/AppVeyorBuildServer.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/BuildServers/AppVeyorBuildServer.cs index 7ebe97f1..28aa86d4 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/BuildServers/AppVeyorBuildServer.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/BuildServers/AppVeyorBuildServer.cs @@ -1,17 +1,17 @@ -using Cake.Common.Build; -using Cake.Common.IO; -using Cake.Core.IO; -using Cake.Issues; -using Cake.Issues.PullRequests; -using Cake.Issues.PullRequests.AppVeyor; -using System; - namespace Cake.Frosting.Issues.Recipe { + using Cake.Common.Build; + using Cake.Common.IO; + using Cake.Core.IO; + using Cake.Issues; + using Cake.Issues.PullRequests; + using Cake.Issues.PullRequests.AppVeyor; + using System; + /// /// Support for AppVeyor builds. /// - internal class AppVeyorBuildServer : BaseBuildServer + internal sealed class AppVeyorBuildServer : BaseBuildServer { /// public override Uri DetermineRepositoryRemoteUrl( @@ -20,14 +20,14 @@ public override Uri DetermineRepositoryRemoteUrl( { context.NotNull(nameof(context)); - switch (context.AppVeyor().Environment.Repository.Provider) + return context.AppVeyor().Environment.Repository.Provider switch { - case "bitBucket": return new Uri($"https://bitbucket.org/{context.AppVeyor().Environment.Repository.Name}/src"); - case "gitHub": return new Uri($"https://github.com/{context.AppVeyor().Environment.Repository.Name}.git"); - case "gitLab": return new Uri($"https://gitlab.com/{context.AppVeyor().Environment.Repository.Name}.git"); - case "vso": return new Uri($"https://dev.azure.com/{context.AppVeyor().Environment.Repository.Name}"); - default: return new Uri(context.AppVeyor().Environment.Repository.Name); - } + "bitBucket" => new Uri($"https://bitbucket.org/{context.AppVeyor().Environment.Repository.Name}/src"), + "gitHub" => new Uri($"https://github.com/{context.AppVeyor().Environment.Repository.Name}.git"), + "gitLab" => new Uri($"https://gitlab.com/{context.AppVeyor().Environment.Repository.Name}.git"), + "vso" => new Uri($"https://dev.azure.com/{context.AppVeyor().Environment.Repository.Name}"), + _ => new Uri(context.AppVeyor().Environment.Repository.Name), + }; } /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/BuildServers/AzureDevOpsBuildServer.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/BuildServers/AzureDevOpsBuildServer.cs index 2a50d85e..df43ac75 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/BuildServers/AzureDevOpsBuildServer.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/BuildServers/AzureDevOpsBuildServer.cs @@ -1,20 +1,20 @@ -using Cake.Common; -using Cake.Common.Build; -using Cake.Common.Build.AzurePipelines.Data; -using Cake.Common.IO; -using Cake.Core.IO; -using Cake.Issues; -using Cake.Issues.Reporting; -using Cake.Issues.Reporting.Generic; -using System; -using System.IO; - namespace Cake.Frosting.Issues.Recipe { + using Cake.Common; + using Cake.Common.Build; + using Cake.Common.Build.AzurePipelines.Data; + using Cake.Common.IO; + using Cake.Core.IO; + using Cake.Issues; + using Cake.Issues.Reporting; + using Cake.Issues.Reporting.Generic; + using System; + using System.IO; + /// /// Support for Azure DevOps / Azure Pipelines builds. /// - internal class AzureDevOpsBuildServer : BaseBuildServer + internal sealed class AzureDevOpsBuildServer : BaseBuildServer { /// public override Uri DetermineRepositoryRemoteUrl( diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/BuildServers/BaseBuildServer.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/BuildServers/BaseBuildServer.cs index d401c496..b7b8573b 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/BuildServers/BaseBuildServer.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/BuildServers/BaseBuildServer.cs @@ -1,9 +1,9 @@ -using Cake.Core.IO; -using Cake.Issues; -using System; - namespace Cake.Frosting.Issues.Recipe { + using Cake.Core.IO; + using Cake.Issues; + using System; + /// /// Basic implementation for all build servers. /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/BuildServers/GitHubActionsBuildServer.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/BuildServers/GitHubActionsBuildServer.cs index ea56890f..9ff76115 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/BuildServers/GitHubActionsBuildServer.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/BuildServers/GitHubActionsBuildServer.cs @@ -1,16 +1,16 @@ -using Cake.Common.Build; -using Cake.Core.IO; -using Cake.Issues; -using Cake.Issues.PullRequests; -using Cake.Issues.PullRequests.GitHubActions; -using System; - namespace Cake.Frosting.Issues.Recipe { + using Cake.Common.Build; + using Cake.Core.IO; + using Cake.Issues; + using Cake.Issues.PullRequests; + using Cake.Issues.PullRequests.GitHubActions; + using System; + /// /// Support for builds running on GitHub Actions. /// - internal class GitHubActionsBuildServer : BaseBuildServer + internal sealed class GitHubActionsBuildServer : BaseBuildServer { /// public override Uri DetermineRepositoryRemoteUrl( diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/BuildServers/IIssuesBuildServer.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/BuildServers/IIssuesBuildServer.cs index 21f00aba..51b502e2 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/BuildServers/IIssuesBuildServer.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/BuildServers/IIssuesBuildServer.cs @@ -1,8 +1,8 @@ -using Cake.Core.IO; -using System; - namespace Cake.Frosting.Issues.Recipe { + using Cake.Core.IO; + using System; + /// /// Description of a build server implementation. /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe.csproj b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe.csproj index 80c22d9b..c8a8875f 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe.csproj +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe.csproj @@ -1,7 +1,7 @@ - net6.0;net7.0 + net6.0;net7.0;net8.0 bin\$(Configuration)\$(TargetFramework)\Cake.Frosting.Issues.Recipe.xml true AllEnabledByDefault @@ -24,7 +24,7 @@ For recipe compatible with Cake Script Runners see Cake.Issues.Recipe.MIT git https://github.com/cake-contrib/Cake.Issues.Recipe.git - https://github.com/cake-contrib/Cake.Issues.Recipe/releases/tag/3.1.1 + https://github.com/cake-contrib/Cake.Issues.Recipe/releases/tag/4.0.0 @@ -36,21 +36,21 @@ For recipe compatible with Cake Script Runners see Cake.Issues.Recipe. - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/IssuesContext.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/IssuesContext.cs index d296cca5..f227edfb 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/IssuesContext.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/IssuesContext.cs @@ -1,26 +1,17 @@ -using Cake.Core; - -namespace Cake.Frosting.Issues.Recipe +namespace Cake.Frosting.Issues.Recipe { + using Cake.Core; + /// /// Parameters and state for the build run. /// - public class IssuesContext : IssuesContext + /// The Cake context. + /// Defines how information about the Git repository should be determined. + public class IssuesContext( + ICakeContext context, + RepositoryInfoProviderType repositoryInfoProviderType) : IssuesContext(context) { - private readonly RepositoryInfoProviderType repositoryInfoProviderType; - - /// - /// Creates a new instance of the class. - /// - /// The Cake context. - /// Defines how information about the Git repository should be determined. - public IssuesContext( - ICakeContext context, - RepositoryInfoProviderType repositoryInfoProviderType) - : base(context) - { - this.repositoryInfoProviderType = repositoryInfoProviderType; - } + private readonly RepositoryInfoProviderType repositoryInfoProviderType = repositoryInfoProviderType; /// protected override IssuesParameters CreateIssuesParameters() diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/IssuesContext{TParameters,TState}.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/IssuesContext{TParameters,TState}.cs index b2171a8e..990bbbad 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/IssuesContext{TParameters,TState}.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/IssuesContext{TParameters,TState}.cs @@ -1,8 +1,8 @@ -using Cake.Core; -using System; - -namespace Cake.Frosting.Issues.Recipe +namespace Cake.Frosting.Issues.Recipe { + using Cake.Core; + using System; + /// /// Base class for parameters and state of the build run. /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IIssuesParameters.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IIssuesParameters.cs index 8444dced..62c08062 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IIssuesParameters.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IIssuesParameters.cs @@ -1,7 +1,7 @@ -using Cake.Core.IO; - -namespace Cake.Frosting.Issues.Recipe +namespace Cake.Frosting.Issues.Recipe { + using Cake.Core.IO; + /// /// Description of parameters of the build. /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IIssuesParametersInputFiles.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IIssuesParametersInputFiles.cs index 271f9114..a4c878b8 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IIssuesParametersInputFiles.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IIssuesParametersInputFiles.cs @@ -1,9 +1,9 @@ -using Cake.Core.IO; -using Cake.Issues; -using System.Collections.Generic; - namespace Cake.Frosting.Issues.Recipe { + using Cake.Core.IO; + using Cake.Issues; + using System.Collections.Generic; + /// /// Parameters for passing input files. /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IIssuesParametersPullRequestSystem.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IIssuesParametersPullRequestSystem.cs index 54071230..30f3a6b0 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IIssuesParametersPullRequestSystem.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IIssuesParametersPullRequestSystem.cs @@ -1,9 +1,9 @@ -using Cake.Issues; -using Cake.Issues.PullRequests; -using System.Collections.Generic; - namespace Cake.Frosting.Issues.Recipe { + using Cake.Issues; + using Cake.Issues.PullRequests; + using System.Collections.Generic; + /// /// Parameters for pull request integration. /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IIssuesParametersReporting.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IIssuesParametersReporting.cs index c72e224b..da7d016f 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IIssuesParametersReporting.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IIssuesParametersReporting.cs @@ -1,7 +1,7 @@ -using Cake.Issues.Reporting.Generic; - namespace Cake.Frosting.Issues.Recipe { + using Cake.Issues.Reporting.Generic; + /// /// Parameters for reporting. /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IssuesParameters.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IssuesParameters.cs index c355de64..b2206794 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IssuesParameters.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IssuesParameters.cs @@ -1,6 +1,3 @@ -using Cake.Core.IO; -using System; - namespace Cake.Frosting.Issues.Recipe { /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IssuesParametersInputFiles.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IssuesParametersInputFiles.cs index 887a8b7a..b01ecf8e 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IssuesParametersInputFiles.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IssuesParametersInputFiles.cs @@ -1,9 +1,9 @@ -using Cake.Core.IO; -using Cake.Issues; -using System.Collections.Generic; - namespace Cake.Frosting.Issues.Recipe { + using Cake.Core.IO; + using Cake.Issues; + using System.Collections.Generic; + /// /// Parameters for passing input files. /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IssuesParametersPullRequestSystem.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IssuesParametersPullRequestSystem.cs index 75391c80..f06d9e0d 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IssuesParametersPullRequestSystem.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IssuesParametersPullRequestSystem.cs @@ -27,6 +27,6 @@ public class IssuesParametersPullRequestSystem : IIssuesParametersPullRequestSys public int? MaxIssuesToPostForEachIssueProvider { get; set; } = 100; /// - public Dictionary ProviderIssueLimits => new Dictionary(); + public Dictionary ProviderIssueLimits => new(); } } \ No newline at end of file diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IssuesParametersReporting.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IssuesParametersReporting.cs index 80c47bdb..5049e606 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IssuesParametersReporting.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IssuesParametersReporting.cs @@ -1,7 +1,7 @@ -using Cake.Issues.Reporting.Generic; - namespace Cake.Frosting.Issues.Recipe { + using Cake.Issues.Reporting.Generic; + /// /// Parameters for reporting. /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IssuesParameters{TInputFiles,TReporting,TBuildServer,TPullRequestSystem}.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IssuesParameters{TInputFiles,TReporting,TBuildServer,TPullRequestSystem}.cs index 68853644..5009c957 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IssuesParameters{TInputFiles,TReporting,TBuildServer,TPullRequestSystem}.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/Parameters/IssuesParameters{TInputFiles,TReporting,TBuildServer,TPullRequestSystem}.cs @@ -1,8 +1,8 @@ -using Cake.Core.IO; -using System; - namespace Cake.Frosting.Issues.Recipe { + using Cake.Core.IO; + using System; + /// /// Parameters of the build. /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/State/IIssuesState.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/State/IIssuesState.cs index d284442b..fc577efc 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/State/IIssuesState.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/State/IIssuesState.cs @@ -1,10 +1,10 @@ -using Cake.Core.IO; -using Cake.Issues; -using System; -using System.Collections.Generic; - -namespace Cake.Frosting.Issues.Recipe +namespace Cake.Frosting.Issues.Recipe { + using Cake.Core.IO; + using Cake.Issues; + using System; + using System.Collections.Generic; + /// /// Description of the mutable state of the build run. /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/State/IssuesState.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/State/IssuesState.cs index c1d1c42d..591f93fd 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/State/IssuesState.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/Context/State/IssuesState.cs @@ -1,15 +1,14 @@ -using Cake.Common; -using Cake.Common.Build; -using Cake.Common.Diagnostics; -using Cake.Common.IO; -using Cake.Core.IO; -using Cake.Issues; -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; - -namespace Cake.Frosting.Issues.Recipe +namespace Cake.Frosting.Issues.Recipe { + using Cake.Common; + using Cake.Common.Build; + using Cake.Common.Diagnostics; + using Cake.Common.IO; + using Cake.Core.IO; + using Cake.Issues; + using System; + using System.Collections.Generic; + /// /// Mutable state of the build run. /// @@ -17,9 +16,9 @@ public class IssuesState : IIssuesState { private readonly IIssuesContext context; - private readonly List issues = new List(); + private readonly List issues = []; - private readonly List<(IIssueProvider, string)> issueProvidersAndRuns = new List<(IIssueProvider, string)>(); + private readonly List<(IIssueProvider, string)> issueProvidersAndRuns = []; /// public DirectoryPath RepositoryRootDirectory { get; } @@ -237,10 +236,7 @@ private static IReadIssuesSettings GetSettings(IReadIssuesSettings configuredSet return defaultSettings; } - if (configuredSettings.FileLinkSettings == null) - { - configuredSettings.FileLinkSettings = defaultSettings.FileLinkSettings; - } + configuredSettings.FileLinkSettings ??= defaultSettings.FileLinkSettings; return configuredSettings; } diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/CreateFullIssuesReportTask.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/CreateFullIssuesReportTask.cs index 15b3206e..de19c97e 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/CreateFullIssuesReportTask.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/CreateFullIssuesReportTask.cs @@ -1,10 +1,10 @@ -using Cake.Common.IO; -using Cake.Issues; -using Cake.Issues.Reporting; -using Cake.Issues.Reporting.Generic; - -namespace Cake.Frosting.Issues.Recipe +namespace Cake.Frosting.Issues.Recipe { + using Cake.Common.IO; + using Cake.Issues; + using Cake.Issues.Reporting; + using Cake.Issues.Reporting.Generic; + /// /// Creates issue report. /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/CreateSarifReportTask.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/CreateSarifReportTask.cs index 5cac633a..21aad9bc 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/CreateSarifReportTask.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/CreateSarifReportTask.cs @@ -1,10 +1,10 @@ -using Cake.Common.IO; -using Cake.Issues; -using Cake.Issues.Reporting; -using Cake.Issues.Reporting.Sarif; - -namespace Cake.Frosting.Issues.Recipe +namespace Cake.Frosting.Issues.Recipe { + using Cake.Common.IO; + using Cake.Issues; + using Cake.Issues.Reporting; + using Cake.Issues.Reporting.Sarif; + /// /// Creates issue report in SARIF format. /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/CreateSummaryIssuesReportTask.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/CreateSummaryIssuesReportTask.cs index 768df782..88e0440a 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/CreateSummaryIssuesReportTask.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/CreateSummaryIssuesReportTask.cs @@ -1,9 +1,9 @@ -using Cake.Common.Build; -using Cake.Common.Diagnostics; -using Cake.Issues; - -namespace Cake.Frosting.Issues.Recipe +namespace Cake.Frosting.Issues.Recipe { + using Cake.Common.Build; + using Cake.Common.Diagnostics; + using Cake.Issues; + /// /// Creates a summary issue report. /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/PublishIssuesArtifactsTask.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/PublishIssuesArtifactsTask.cs index fb1873d7..528113fb 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/PublishIssuesArtifactsTask.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/PublishIssuesArtifactsTask.cs @@ -1,9 +1,9 @@ -using Cake.Common.Build; -using Cake.Common.Diagnostics; -using Cake.Issues; - -namespace Cake.Frosting.Issues.Recipe +namespace Cake.Frosting.Issues.Recipe { + using Cake.Common.Build; + using Cake.Common.Diagnostics; + using Cake.Issues; + /// /// Publish issue artifacts to build server. /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/PullRequestSystems/AzureDevOpsPullRequestSystem.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/PullRequestSystems/AzureDevOpsPullRequestSystem.cs index 96b7570b..01d611f7 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/PullRequestSystems/AzureDevOpsPullRequestSystem.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/PullRequestSystems/AzureDevOpsPullRequestSystem.cs @@ -1,19 +1,19 @@ -using Cake.AzureDevOps; -using Cake.AzureDevOps.Repos.PullRequest; -using Cake.Common; -using Cake.Common.Diagnostics; -using Cake.Issues; -using Cake.Issues.PullRequests; -using Cake.Issues.PullRequests.AzureDevOps; -using System.Collections.Generic; -using System.Linq; - namespace Cake.Frosting.Issues.Recipe { + using Cake.AzureDevOps; + using Cake.AzureDevOps.Repos.PullRequest; + using Cake.Common; + using Cake.Common.Diagnostics; + using Cake.Issues; + using Cake.Issues.PullRequests; + using Cake.Issues.PullRequests.AzureDevOps; + using System.Collections.Generic; + using System.Linq; + /// /// Support for Azure DevOps / Azure Repository hosted code. /// - internal class AzureDevOpsPullRequestSystem : BasePullRequestSystem + internal sealed class AzureDevOpsPullRequestSystem : BasePullRequestSystem { /// public override void ReportIssuesToPullRequest(IIssuesContext context) @@ -129,8 +129,10 @@ private static void SetPullRequestStatus( context.State.BuildServer.DeterminePullRequestId(context).Value, context.AzureDevOpsAuthenticationOAuth(context.EnvironmentVariable("SYSTEM_ACCESSTOKEN"))); + var issuesList = issues.ToList(); + var pullRequestStatusName = "Issues"; - var pullRequestDescriptionIfIssues = $"Found {issues.Count()} issues"; + var pullRequestDescriptionIfIssues = $"Found {issuesList.Count} issues"; var pullRequestDescriptionIfNoIssues = "No issues found"; if (!string.IsNullOrWhiteSpace(issueIdentifier)) @@ -148,7 +150,7 @@ private static void SetPullRequestStatus( } var state = - issues.Any() ? + issuesList.Count != 0 ? AzureDevOpsPullRequestStatusState.Failed : AzureDevOpsPullRequestStatusState.Succeeded; @@ -159,7 +161,7 @@ private static void SetPullRequestStatus( { Genre = "Cake.Issues.Recipe", State = state, - Description = issues.Any() ? pullRequestDescriptionIfIssues : pullRequestDescriptionIfNoIssues + Description = issuesList.Count != 0 ? pullRequestDescriptionIfIssues : pullRequestDescriptionIfNoIssues }; context.AzureDevOpsSetPullRequestStatus( diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/PullRequestSystems/BasePullRequestSystem.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/PullRequestSystems/BasePullRequestSystem.cs index f40106b7..e34f761c 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/PullRequestSystems/BasePullRequestSystem.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/PullRequestSystems/BasePullRequestSystem.cs @@ -1,8 +1,8 @@ -using Cake.Issues; -using Cake.Issues.PullRequests; - namespace Cake.Frosting.Issues.Recipe { + using Cake.Issues; + using Cake.Issues.PullRequests; + /// /// Basic implementation for all pull request server. /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/PullRequestSystems/GitHubPullRequestSystem.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/PullRequestSystems/GitHubPullRequestSystem.cs index e8a95862..4c7650ca 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/PullRequestSystems/GitHubPullRequestSystem.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/PullRequestSystems/GitHubPullRequestSystem.cs @@ -1,11 +1,11 @@ -using Cake.Issues; - namespace Cake.Frosting.Issues.Recipe { + using Cake.Issues; + /// /// Support for GitHub hosted code. /// - internal class GitHubPullRequestSystem : BasePullRequestSystem + internal sealed class GitHubPullRequestSystem : BasePullRequestSystem { /// public override void ReportIssuesToPullRequest(IIssuesContext context) diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/PullRequestSystems/IIssuesPullRequestSystem.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/PullRequestSystems/IIssuesPullRequestSystem.cs index 6c4ff222..32844500 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/PullRequestSystems/IIssuesPullRequestSystem.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/PullRequestSystems/IIssuesPullRequestSystem.cs @@ -1,7 +1,7 @@ -using Cake.Issues; - namespace Cake.Frosting.Issues.Recipe { + using Cake.Issues; + /// /// Description of a pull request system implementation. /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/ReadIssuesTask.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/ReadIssuesTask.cs index bd6b5940..b75f179c 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/ReadIssuesTask.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/ReadIssuesTask.cs @@ -1,13 +1,13 @@ -using Cake.Common.Diagnostics; -using Cake.Issues; -using Cake.Issues.EsLint; -using Cake.Issues.InspectCode; -using Cake.Issues.Markdownlint; -using Cake.Issues.MsBuild; -using System.Linq; - -namespace Cake.Frosting.Issues.Recipe +namespace Cake.Frosting.Issues.Recipe { + using Cake.Common.Diagnostics; + using Cake.Issues; + using Cake.Issues.EsLint; + using Cake.Issues.InspectCode; + using Cake.Issues.Markdownlint; + using Cake.Issues.MsBuild; + using System.Linq; + /// /// Reads issues from the provided log files. /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/ReportIssuesToBuildServerTask.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/ReportIssuesToBuildServerTask.cs index 723b424d..53ed03ed 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/ReportIssuesToBuildServerTask.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/ReportIssuesToBuildServerTask.cs @@ -1,9 +1,9 @@ -using Cake.Common.Build; -using Cake.Common.Diagnostics; -using Cake.Issues; - -namespace Cake.Frosting.Issues.Recipe +namespace Cake.Frosting.Issues.Recipe { + using Cake.Common.Build; + using Cake.Common.Diagnostics; + using Cake.Issues; + /// /// Report issues to build server. /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/ReportIssuesToPullRequestTask.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/ReportIssuesToPullRequestTask.cs index 353112c1..978a52b6 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/ReportIssuesToPullRequestTask.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/ReportIssuesToPullRequestTask.cs @@ -1,9 +1,9 @@ -using Cake.Common.Build; -using Cake.Common.Diagnostics; -using Cake.Issues; - -namespace Cake.Frosting.Issues.Recipe +namespace Cake.Frosting.Issues.Recipe { + using Cake.Common.Build; + using Cake.Common.Diagnostics; + using Cake.Issues; + /// /// Report issues to build server. /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/RepositoryInfo/CakeGitRepositoryInfoProvider.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/RepositoryInfo/CakeGitRepositoryInfoProvider.cs index f7803352..e7b9d23f 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/RepositoryInfo/CakeGitRepositoryInfoProvider.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/RepositoryInfo/CakeGitRepositoryInfoProvider.cs @@ -1,16 +1,16 @@ -using Cake.Core; -using Cake.Core.IO; -using Cake.Git; -using Cake.Issues; -using System; -using System.Linq; - -namespace Cake.Frosting.Issues.Recipe +namespace Cake.Frosting.Issues.Recipe { + using Cake.Core; + using Cake.Core.IO; + using Cake.Git; + using Cake.Issues; + using System; + using System.Linq; + /// /// Provider to retrieve repository information using Cake.Git addin. /// - internal class CakeGitRepositoryInfoProvider : IRepositoryInfoProvider + internal sealed class CakeGitRepositoryInfoProvider : IRepositoryInfoProvider { /// public DirectoryPath GetRepositoryRootDirectory(ICakeContext context, DirectoryPath buildRootDirectory) diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/RepositoryInfo/CliRepositoryInfoProvider.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/RepositoryInfo/CliRepositoryInfoProvider.cs index d6513142..8e3fc1bc 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/RepositoryInfo/CliRepositoryInfoProvider.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/RepositoryInfo/CliRepositoryInfoProvider.cs @@ -1,17 +1,17 @@ -using Cake.Common; -using Cake.Core; -using Cake.Core.IO; -using Cake.Issues; -using System; -using System.Collections.Generic; -using System.Linq; - -namespace Cake.Frosting.Issues.Recipe +namespace Cake.Frosting.Issues.Recipe { + using Cake.Common; + using Cake.Core; + using Cake.Core.IO; + using Cake.Issues; + using System; + using System.Collections.Generic; + using System.Linq; + /// /// Provider to retrieve repository information using Git CLI. /// - internal class CliRepositoryInfoProvider : IRepositoryInfoProvider + internal sealed class CliRepositoryInfoProvider : IRepositoryInfoProvider { /// public DirectoryPath GetRepositoryRootDirectory(ICakeContext context, DirectoryPath buildRootDirectory) @@ -51,7 +51,7 @@ private static IEnumerable GitCommand( DirectoryPath repositoryRootFolder, params string[] arguments) { - if (!arguments.Any()) + if (arguments.Length == 0) { throw new ArgumentOutOfRangeException(nameof(arguments)); } diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/RepositoryInfo/IRepositoryInfoProvider.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/RepositoryInfo/IRepositoryInfoProvider.cs index f761a0c6..11ccf855 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/RepositoryInfo/IRepositoryInfoProvider.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/RepositoryInfo/IRepositoryInfoProvider.cs @@ -1,9 +1,9 @@ -using Cake.Core; -using Cake.Core.IO; -using System; - -namespace Cake.Frosting.Issues.Recipe +namespace Cake.Frosting.Issues.Recipe { + using Cake.Core; + using Cake.Core.IO; + using System; + /// /// Description of a provider to retrieve repository information. /// diff --git a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/SetPullRequestIssuesStateTask.cs b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/SetPullRequestIssuesStateTask.cs index 73650fca..067fc38e 100644 --- a/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/SetPullRequestIssuesStateTask.cs +++ b/Cake.Frosting.Issues.Recipe/Cake.Frosting.Issues.Recipe/SetPullRequestIssuesStateTask.cs @@ -1,9 +1,9 @@ -using Cake.Common.Build; -using Cake.Common.Diagnostics; -using Cake.Issues; - -namespace Cake.Frosting.Issues.Recipe +namespace Cake.Frosting.Issues.Recipe { + using Cake.Common.Build; + using Cake.Common.Diagnostics; + using Cake.Issues; + /// /// Set pull request status. /// diff --git a/Cake.Frosting.Issues.Recipe/Directory.Build.props b/Cake.Frosting.Issues.Recipe/Directory.Build.props new file mode 100644 index 00000000..a95ac958 --- /dev/null +++ b/Cake.Frosting.Issues.Recipe/Directory.Build.props @@ -0,0 +1,5 @@ + + + latest + + \ No newline at end of file diff --git a/Cake.Issues.Recipe/Content/addins.cake b/Cake.Issues.Recipe/Content/addins.cake index 725b81dc..f6a27295 100644 --- a/Cake.Issues.Recipe/Content/addins.cake +++ b/Cake.Issues.Recipe/Content/addins.cake @@ -2,17 +2,17 @@ // ADDINS /////////////////////////////////////////////////////////////////////////////// -#addin nuget:?package=Cake.Git&version=3.0.0 -#addin nuget:?package=Cake.Issues&version=3.0.0 -#addin nuget:?package=Cake.Issues.MsBuild&version=3.0.0 -#addin nuget:?package=Cake.Issues.InspectCode&version=3.0.0 -#addin nuget:?package=Cake.Issues.Markdownlint&version=3.0.0 -#addin nuget:?package=Cake.Issues.EsLint&version=3.0.0 -#addin nuget:?package=Cake.Issues.Reporting&version=3.0.0 -#addin nuget:?package=Cake.Issues.Reporting.Generic&version=3.0.0 -#addin nuget:?package=Cake.Issues.Reporting.Sarif&version=3.0.1 -#addin nuget:?package=Cake.Issues.PullRequests&version=3.0.0 -#addin nuget:?package=Cake.Issues.PullRequests.AppVeyor&version=3.0.0 -#addin nuget:?package=Cake.Issues.PullRequests.AzureDevOps&version=3.0.0 -#addin nuget:?package=Cake.Issues.PullRequests.GitHubActions&version=3.0.0 -#addin nuget:?package=Cake.AzureDevOps&version=3.0.1 +#addin nuget:?package=Cake.Git&version=4.0.0 +#addin nuget:?package=Cake.Issues&version=4.0.0 +#addin nuget:?package=Cake.Issues.MsBuild&version=4.0.0 +#addin nuget:?package=Cake.Issues.InspectCode&version=4.0.0 +#addin nuget:?package=Cake.Issues.Markdownlint&version=4.0.0 +#addin nuget:?package=Cake.Issues.EsLint&version=4.0.0 +#addin nuget:?package=Cake.Issues.Reporting&version=4.0.0 +#addin nuget:?package=Cake.Issues.Reporting.Generic&version=4.0.0 +#addin nuget:?package=Cake.Issues.Reporting.Sarif&version=4.0.0 +#addin nuget:?package=Cake.Issues.PullRequests&version=4.0.0 +#addin nuget:?package=Cake.Issues.PullRequests.AppVeyor&version=4.0.0 +#addin nuget:?package=Cake.Issues.PullRequests.AzureDevOps&version=4.0.0 +#addin nuget:?package=Cake.Issues.PullRequests.GitHubActions&version=4.0.0 +#addin nuget:?package=Cake.AzureDevOps&version=4.0.0 diff --git a/azure-pipelines.yml b/azure-pipelines.yml index a2865f8e..2a4b119a 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -19,12 +19,19 @@ jobs: - task: UseDotNet@2 inputs: version: '5.x' + displayName: 'Install .NET 5' - task: UseDotNet@2 inputs: version: '6.x' + displayName: 'Install .NET 6' - task: UseDotNet@2 inputs: version: '7.x' + displayName: 'Install .NET 7' + - task: UseDotNet@2 + inputs: + version: '8.x' + displayName: 'Install .NET 8' - powershell: ./build.ps1 displayName: 'Build' - publish: $(Build.SourcesDirectory)/BuildArtifacts/Packages/NuGet @@ -40,6 +47,7 @@ jobs: - task: UseDotNet@2 inputs: version: '6.x' + displayName: 'Install .NET 6' - task: NodeTool@0 inputs: versionSpec: '14.x' @@ -70,6 +78,7 @@ jobs: - task: UseDotNet@2 inputs: version: '7.x' + displayName: 'Install .NET 7' - task: NodeTool@0 inputs: versionSpec: '14.x' @@ -90,6 +99,37 @@ jobs: - publish: $(Build.SourcesDirectory)/tests/frosting/net7.0/build/BuildArtifacts/output artifact: Integration Tests Frosting Windows 2022 (.NET 7) displayName: 'Publish generated reports as build artifact' +# Integration Tests Frosting Windows (.NET 8) +- job: Test_Frosting_Windows_2022_Net8 + displayName: Integration Tests Frosting Windows 2022 (.NET 8) + dependsOn: Build + pool: + vmImage: 'windows-2022' + steps: + - task: UseDotNet@2 + inputs: + version: '8.x' + displayName: 'Install .NET 8' + - task: NodeTool@0 + inputs: + versionSpec: '14.x' + displayName: 'Install NodeJs 14.x' + - powershell: choco install markdownlint-cli --no-progress + displayName: 'Install required tools' + - download: current + artifact: NuGet Package + displayName: 'Download build artifact' + - task: CopyFiles@2 + inputs: + sourceFolder: $(Pipeline.Workspace)/NuGet Package + targetFolder: $(Build.SourcesDirectory)/BuildArtifacts/Packages/NuGet + displayName: 'Copy build artifact for test run' + - powershell: ./build.ps1 --verbosity=diagnostic + workingDirectory: ./tests/frosting/net8.0 + displayName: 'Run integration tests' + - publish: $(Build.SourcesDirectory)/tests/frosting/net8.0/build/BuildArtifacts/output + artifact: Integration Tests Frosting Windows 2022 (.NET 8) + displayName: 'Publish generated reports as build artifact' # Integration Tests Script Runner Windows 2019 (.NET Core tool) - job: Test_Script_Runner_Windows_2019_DotNetCoreTool displayName: Integration Tests Script Runner Windows 2019 (.NET Core tool) @@ -100,6 +140,7 @@ jobs: - task: UseDotNet@2 inputs: version: '6.x' + displayName: 'Install .NET 6' - task: NodeTool@0 inputs: versionSpec: '14.x' @@ -130,6 +171,7 @@ jobs: - task: UseDotNet@2 inputs: version: '6.x' + displayName: 'Install .NET 6' - task: NodeTool@0 inputs: versionSpec: '14.x' @@ -160,6 +202,7 @@ jobs: - task: UseDotNet@2 inputs: version: '6.x' + displayName: 'Install .NET 6' - task: NodeTool@0 inputs: versionSpec: '14.x' @@ -192,6 +235,7 @@ jobs: - task: UseDotNet@2 inputs: version: '7.x' + displayName: 'Install .NET 7' - task: NodeTool@0 inputs: versionSpec: '14.x' @@ -214,6 +258,39 @@ jobs: - publish: $(Build.SourcesDirectory)/tests/frosting/net7.0/build/BuildArtifacts/output artifact: Integration Tests Frosting macOS 12 (.NET 7) displayName: 'Publish generated reports as build artifact' +# Integration Tests Frosting macOS 12 (.NET 8) +- job: Test_Frosting_macOS_12_Net8 + displayName: Integration Tests Frosting macOS 12 (.NET 8) + dependsOn: Build + pool: + vmImage: 'macOS-12' + steps: + - task: UseDotNet@2 + inputs: + version: '8.x' + displayName: 'Install .NET 8' + - task: NodeTool@0 + inputs: + versionSpec: '14.x' + displayName: 'Install NodeJs 14.x' + - bash: | + npm install -g markdownlint-cli + displayName: 'Install required tools' + - download: current + artifact: NuGet Package + displayName: 'Download build artifact' + - task: CopyFiles@2 + inputs: + sourceFolder: $(Pipeline.Workspace)/NuGet Package + targetFolder: $(Build.SourcesDirectory)/BuildArtifacts/Packages/NuGet + displayName: 'Copy build artifact for test run' + - bash: | + ./build.sh --verbosity=diagnostic + workingDirectory: ./tests/frosting/net8.0 + displayName: 'Run integration tests' + - publish: $(Build.SourcesDirectory)/tests/frosting/net8.0/build/BuildArtifacts/output + artifact: Integration Tests Frosting macOS 12 (.NET 8) + displayName: 'Publish generated reports as build artifact' # Integration Tests Script Runner macOS 11 (.NET Core tool) - job: Test_Script_Runner_macOS_11_DotNetCoreTool displayName: Integration Tests Script Runner macOS 11 (.NET Core tool) @@ -224,6 +301,7 @@ jobs: - task: UseDotNet@2 inputs: version: '6.x' + displayName: 'Install .NET 6' - task: NodeTool@0 inputs: versionSpec: '14.x' @@ -256,6 +334,7 @@ jobs: - task: UseDotNet@2 inputs: version: '6.x' + displayName: 'Install .NET 6' - task: NodeTool@0 inputs: versionSpec: '14.x' @@ -288,6 +367,7 @@ jobs: - task: UseDotNet@2 inputs: version: '6.x' + displayName: 'Install .NET 6' - task: NodeTool@0 inputs: versionSpec: '14.x' @@ -311,7 +391,7 @@ jobs: artifact: Integration Tests Frosting Ubuntu 20.04 (.NET 6) displayName: 'Publish generated reports as build artifact' # Integration Tests Frosting Ubuntu 22.04 (.NET 7) -- job: Test_Frosting_ubuntu_2204_Net6 +- job: Test_Frosting_ubuntu_2204_Net7 displayName: Integration Tests Frosting Ubuntu 22.04 (.NET 7) dependsOn: Build pool: @@ -320,6 +400,7 @@ jobs: - task: UseDotNet@2 inputs: version: '7.x' + displayName: 'Install .NET 7' - task: NodeTool@0 inputs: versionSpec: '14.x' @@ -342,6 +423,39 @@ jobs: - publish: $(Build.SourcesDirectory)/tests/frosting/net7.0/build/BuildArtifacts/output artifact: Integration Tests Frosting Ubuntu 22.04 (.NET 7) displayName: 'Publish generated reports as build artifact' +# Integration Tests Frosting Ubuntu 22.04 (.NET 8) +- job: Test_Frosting_ubuntu_2204_Net8 + displayName: Integration Tests Frosting Ubuntu 22.04 (.NET 8) + dependsOn: Build + pool: + vmImage: 'ubuntu-22.04' + steps: + - task: UseDotNet@2 + inputs: + version: '8.x' + displayName: 'Install .NET 8' + - task: NodeTool@0 + inputs: + versionSpec: '14.x' + displayName: 'Install NodeJs 14.x' + - bash: | + npm install -g markdownlint-cli + displayName: 'Install required tools' + - download: current + artifact: NuGet Package + displayName: 'Download build artifact' + - task: CopyFiles@2 + inputs: + sourceFolder: $(Pipeline.Workspace)/NuGet Package + targetFolder: $(Build.SourcesDirectory)/BuildArtifacts/Packages/NuGet + displayName: 'Copy build artifact for test run' + - bash: | + ./build.sh --verbosity=diagnostic + workingDirectory: ./tests/frosting/net8.0 + displayName: 'Run integration tests' + - publish: $(Build.SourcesDirectory)/tests/frosting/net8.0/build/BuildArtifacts/output + artifact: Integration Tests Frosting Ubuntu 22.04 (.NET 8) + displayName: 'Publish generated reports as build artifact' # Integration Tests Script Runner Ubuntu 20.04 (.NET Core tool) - job: Test_Script_Runner_ubuntu_2004_DotNetCoreTool displayName: Integration Tests Script Runner Ubuntu 20.04 (.NET Core tool) @@ -352,6 +466,7 @@ jobs: - task: UseDotNet@2 inputs: version: '6.x' + displayName: 'Install .NET 6' - task: NodeTool@0 inputs: versionSpec: '14.x' @@ -384,6 +499,7 @@ jobs: - task: UseDotNet@2 inputs: version: '6.x' + displayName: 'Install .NET 6' - task: NodeTool@0 inputs: versionSpec: '14.x' diff --git a/docs/overview.md b/docs/overview.md index 2a113494..1ade597c 100644 --- a/docs/overview.md +++ b/docs/overview.md @@ -22,21 +22,22 @@ See [supported tools] for a list of supported linters, build servers and pull re Cake.Issues recipes will add the following addins to your build: -| Addin Cake.Issues.Recipe | Addin.Frosting.Issues.Recipe | Remarks | -|------------------------------------------------|------------------------------------------------|-| -| [Cake.Git] 3.0.0 | [Cake.Git] 3.0.0 | Only used if `RepositoryInfoProvider` type is set to `RepositoryInfoProviderType.CakeGit`. See [Git repository information configuration] for details. | -| [Cake.Issues] 3.0.0 | [Cake.Issues] 3.0.0 | | -| [Cake.Issues.MsBuild] 3.0.0 | [Cake.Issues.MsBuild] 3.0.0 | | -| [Cake.Issues.InspectCode] 3.0.0 | [Cake.Issues.InspectCode] 3.0.0 | | -| [Cake.Issues.Markdownlint] 3.0.0 | [Cake.Issues.Markdownlint] 3.0.0 | | -| [Cake.Issues.EsLint] 3.0.0 | [Cake.Issues.EsLint] 3.0.0 | | -| [Cake.Issues.Reporting] 3.0.0 | [Cake.Issues.Reporting] 3.0.0 | | -| [Cake.Issues.Reporting.Generic] 3.0.0 | [Cake.Frosting.Issues.Reporting.Generic] 3.0.0 | | -| [Cake.Issues.PullRequests] 3.0.0 | [Cake.Issues.PullRequests] 3.0.0 | | -| [Cake.Issues.PullRequests.AppVeyor] 3.0.0 | [Cake.Issues.PullRequests.AppVeyor] 3.0.0 | | -| [Cake.Issues.PullRequests.AzureDevOps] 3.0.0 | [Cake.Issues.PullRequests.AzureDevOps] 3.0.0 | | -| [Cake.Issues.PullRequests.GitHubActions] 3.0.0 | [Cake.Issues.PullRequests.GitHubActions] 3.0.0 | | -| [Cake.AzureDevOps] 3.0.1 | [Cake.AzureDevOps] 3.0.1 | | +| Addin Cake.Issues.Recipe | Addin.Frosting.Issues.Recipe | Remarks | +|---------------------------------------------------------|---------------------------------------------------------|-| +| [Cake.Git] 4.0.0 | [Cake.Frosting.Git] 4.0.0 | Only used if `RepositoryInfoProvider` type is set to `RepositoryInfoProviderType.CakeGit`. See [Git repository information configuration] for details. | +| [Cake.Issues] 4.0.0 | [Cake.Issues] 4.0.0 | | +| [Cake.Issues.MsBuild] 4.0.0 | [Cake.Frosting.Issues.MsBuild] 4.0.0 | | +| [Cake.Issues.InspectCode] 4.0.0 | [Cake.Issues.InspectCode] 4.0.0 | | +| [Cake.Issues.Markdownlint] 4.0.0 | [Cake.Issues.Markdownlint] 4.0.0 | | +| [Cake.Issues.EsLint] 4.0.0 | [Cake.Issues.EsLint] 4.0.0 | | +| [Cake.Issues.Reporting] 4.0.0 | [Cake.Issues.Reporting] 4.0.0 | | +| [Cake.Issues.Reporting.Generic] 4.0.0 | [Cake.Frosting.Issues.Reporting.Generic] 4.0.0 | | +| [Cake.Issues.Reporting.Sarif] 4.0.0 | [Cake.Frosting.Issues.Reporting.Sarif] 4.0.0 | | +| [Cake.Issues.PullRequests] 4.0.0 | [Cake.Issues.PullRequests] 4.0.0 | | +| [Cake.Issues.PullRequests.AppVeyor] 4.0.0 | [Cake.Issues.PullRequests.AppVeyor] 4.0.0 | | +| [Cake.Issues.PullRequests.AzureDevOps] 4.0.0 | [Cake.Issues.PullRequests.AzureDevOps] 4.0.0 | | +| [Cake.Issues.PullRequests.GitHubActions] 4.0.0 | [Cake.Issues.PullRequests.GitHubActions] 4.0.0 | | +| [Cake.AzureDevOps] | [Cake.AzureDevOps] | | [Cake.Issues.Recipe]: https://www.nuget.org/packages/Cake.Issues.Recipe [Cake.Frosting.Issues.Recipe]: https://www.nuget.org/packages/Cake.Frosting.Issues.Recipe @@ -47,14 +48,18 @@ Cake.Issues recipes will add the following addins to your build: [supported tools]: supported-tools [Git repository information configuration]: /docs/recipe/configuration#git-repository-information [Cake.Git]: https://cakebuild.net/extensions/cake-git/ +[Cake.Frosting.Git]: https://cakebuild.net/extensions/cake-git/ [Cake.Issues]: https://cakebuild.net/extensions/cake-issues/ [Cake.Issues.MsBuild]: https://cakebuild.net/extensions/cake-issues-msbuild/ +[Cake.Frosting.Issues.MsBuild]: https://cakebuild.net/extensions/cake-issues-msbuild/ [Cake.Issues.InspectCode]: https://cakebuild.net/extensions/cake-issues-inspectcode/ [Cake.Issues.Markdownlint]: https://cakebuild.net/extensions/cake-issues-markdownlint/ [Cake.Issues.EsLint]: https://cakebuild.net/extensions/cake-issues-eslint/ [Cake.Issues.Reporting]: https://cakebuild.net/extensions/cake-issues-reporting/ [Cake.Issues.Reporting.Generic]: https://cakebuild.net/extensions/cake-issues-reporting-generic/ [Cake.Frosting.Issues.Reporting.Generic]: https://cakebuild.net/extensions/cake-issues-reporting-generic/ +[Cake.Issues.Reporting.Sarif]: https://cakebuild.net/extensions/cake-issues-reporting-sarif/ +[Cake.Frosting.Issues.Reporting.Sarif]: https://cakebuild.net/extensions/cake-issues-reporting-sarif/ [Cake.Issues.PullRequests]: https://cakebuild.net/extensions/cake-issues-pullrequests/ [Cake.Issues.PullRequests.AppVeyor]: https://cakebuild.net/extensions/cake-issues-pullrequests-appveyor/ [Cake.Issues.PullRequests.AzureDevOps]: https://cakebuild.net/extensions/cake-issues-pullrequests-azuredevops/ diff --git a/nuspec/nuget/Cake.Issues.Recipe.nuspec b/nuspec/nuget/Cake.Issues.Recipe.nuspec index 5ba8bb3f..f133c84d 100644 --- a/nuspec/nuget/Cake.Issues.Recipe.nuspec +++ b/nuspec/nuget/Cake.Issues.Recipe.nuspec @@ -23,7 +23,7 @@ For recipe compatible with Cake Frosting see Cake.Frosting.Issues.Recipe. Copyright © Pascal Berger cake cake-recipe cake-issues - https://github.com/cake-contrib/Cake.Issues.Recipe/releases/tag/3.1.1 + https://github.com/cake-contrib/Cake.Issues.Recipe/releases/tag/4.0.0 diff --git a/recipe.cake b/recipe.cake index c9440ac8..979a65ab 100644 --- a/recipe.cake +++ b/recipe.cake @@ -32,10 +32,11 @@ Task("Generate-Version-File") // Write metadata to configuration file System.IO.File.WriteAllText( "./Cake.Issues.Recipe/cake-version.yml", - @"TargetCakeVersion: 3.0.0 + @"TargetCakeVersion: 4.0.0 TargetFrameworks: - net6.0 -- net7.0" +- net7.0 +- net8.0" ); // Write metadata to class for use when running a build diff --git a/tests/frosting/net6.0/build/Build.csproj b/tests/frosting/net6.0/build/Build.csproj index b5df56d6..3910a1ea 100644 --- a/tests/frosting/net6.0/build/Build.csproj +++ b/tests/frosting/net6.0/build/Build.csproj @@ -5,7 +5,7 @@ $(MSBuildProjectDirectory) - + \ No newline at end of file diff --git a/tests/frosting/net7.0/build/Build.csproj b/tests/frosting/net7.0/build/Build.csproj index 1ae36748..d28dff00 100644 --- a/tests/frosting/net7.0/build/Build.csproj +++ b/tests/frosting/net7.0/build/Build.csproj @@ -5,7 +5,7 @@ $(MSBuildProjectDirectory) - + \ No newline at end of file diff --git a/tests/frosting/net8.0/build.ps1 b/tests/frosting/net8.0/build.ps1 new file mode 100644 index 00000000..eace4c8f --- /dev/null +++ b/tests/frosting/net8.0/build.ps1 @@ -0,0 +1,13 @@ +$RECIPE_PACKAGE_PATH = "packages/cake.frosting.issues.recipe" +if (Test-Path $RECIPE_PACKAGE_PATH) +{ + Write-Host "Cleaning up cached version of $RECIPE_PACKAGE_PATH..." + Remove-Item $RECIPE_PACKAGE_PATH -Recurse; +} +else +{ + Write-Host "$RECIPE_PACKAGE_PATH not cached..." +} + +dotnet run --project build/Build.csproj -- $args +exit $LASTEXITCODE; \ No newline at end of file diff --git a/tests/frosting/net8.0/build.sh b/tests/frosting/net8.0/build.sh new file mode 100755 index 00000000..8dafc54e --- /dev/null +++ b/tests/frosting/net8.0/build.sh @@ -0,0 +1,11 @@ + +$RECIPE_PACKAGE_PATH = "packages/cake.frosting.issues.recipe" +if [ -d "$RECIPE_PACKAGE_PATH" ] +then + echo "Cleaning up cached version of $RECIPE_PACKAGE_PATH..." + rm -Rf $RECIPE_PACKAGE_PATH +else + echo "$RECIPE_PACKAGE_PATH not cached..." +fi + +dotnet run --project ./build/Build.csproj -- "$@" diff --git a/tests/frosting/net8.0/build/.gitignore b/tests/frosting/net8.0/build/.gitignore new file mode 100644 index 00000000..29cb0b57 --- /dev/null +++ b/tests/frosting/net8.0/build/.gitignore @@ -0,0 +1,2 @@ +### Cake ### +tools/* \ No newline at end of file diff --git a/tests/frosting/net8.0/build/Build.csproj b/tests/frosting/net8.0/build/Build.csproj new file mode 100644 index 00000000..335e6d1e --- /dev/null +++ b/tests/frosting/net8.0/build/Build.csproj @@ -0,0 +1,11 @@ + + + Exe + net8.0 + $(MSBuildProjectDirectory) + + + + + + \ No newline at end of file diff --git a/tests/frosting/net8.0/build/Program.cs b/tests/frosting/net8.0/build/Program.cs new file mode 100644 index 00000000..e6ec3709 --- /dev/null +++ b/tests/frosting/net8.0/build/Program.cs @@ -0,0 +1,125 @@ +using System; +using System.Reflection; +using Cake.Common; +using Cake.Common.Diagnostics; +using Cake.Common.Tools.InspectCode; +using Cake.Core; +using Cake.Core.Diagnostics; +using Cake.Core.IO; +using Cake.Frosting; +using Cake.Frosting.Issues.Recipe; + +public static class Program +{ + public static int Main(string[] args) + { + return new CakeHost() + .UseContext() + .UseLifetime() + .InstallTool(new Uri("nuget:?package=JetBrains.ReSharper.CommandLineTools")) + // Register Cake.Frosting.Issues.Recipe tasks. + .AddAssembly(Assembly.GetAssembly(typeof(IssuesTask))) + .Run(args); + } +} + +public class BuildContext : IssuesContext +{ + public BuildContext(ICakeContext context) + : base(context) + { + } + + protected override BuildParameters CreateIssuesParameters() + { + return new BuildParameters(); + } + + protected override BuildState CreateIssuesState() + { + return new BuildState(this); + } +} + +public class BuildParameters : IssuesParameters +{ + public DirectoryPath LogDirectoryPath => this.OutputDirectory.Combine("logs"); + + public BuildParameters() + { + this.OutputDirectory = this.OutputDirectory.Combine("output"); + } +} + +public class BuildState : IssuesState +{ + public FilePath SolutionFilePath { get; } + + public BuildState(BuildContext context) + : base(context, RepositoryInfoProviderType.Cli) + { + this.SolutionFilePath = + this.ProjectRootDirectory + .Combine("src") + .CombineWithFilePath("ClassLibrary1.sln"); + } +} + +public class Lifetime : FrostingLifetime +{ + public override void Setup(BuildContext context, ISetupContext info) + { + // Determine Build Identifier + var platform = context.Environment.Platform.Family.ToString(); + var runtime = context.Environment.Runtime.IsCoreClr ? ".NET Core" : ".NET Framework"; + + context.Parameters.BuildIdentifier = $"Cake Frosting {platform} ({runtime})"; + + context.Information("Build identifier: {0}", context.Parameters.BuildIdentifier); + } + + public override void Teardown(BuildContext context, ITeardownContext info) + { + } +} + +[TaskName("Run-InspectCode")] +public sealed class RunInspectCodeTask : FrostingTask +{ + public override bool ShouldRun(BuildContext context) + { + return context.IsRunningOnWindows(); + } + + public override void Run(BuildContext context) + { + // Run InspectCode. + var inspectCodeLogFilePath = context.Parameters.LogDirectoryPath.CombineWithFilePath("inspectCode.log"); + + var settings = new InspectCodeSettings() { + OutputFile = inspectCodeLogFilePath, + ArgumentCustomization = x => x.Append("--no-build"), + WorkingDirectory = context.State.ProjectRootDirectory + }; + + context.InspectCode( + context.State.SolutionFilePath, + settings); + + // Pass path to InspectCode log file to Cake.Frosting.Issues.Recipe. + context.Parameters.InputFiles.AddInspectCodeLogFile(inspectCodeLogFilePath); + } +} + +[TaskName("Lint")] +[IsDependentOn(typeof(RunInspectCodeTask))] +[IsDependeeOf(typeof(ReadIssuesTask))] +public class LintTask : FrostingTask +{ +} + +[TaskName("Default")] +[IsDependentOn(typeof(IssuesTask))] +public class DefaultTask : FrostingTask +{ +} diff --git a/tests/frosting/net8.0/nuget.config b/tests/frosting/net8.0/nuget.config new file mode 100644 index 00000000..663b555f --- /dev/null +++ b/tests/frosting/net8.0/nuget.config @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/frosting/net8.0/src/ClassLibrary1.sln b/tests/frosting/net8.0/src/ClassLibrary1.sln new file mode 100644 index 00000000..62df92e3 --- /dev/null +++ b/tests/frosting/net8.0/src/ClassLibrary1.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassLibrary1", "ClassLibrary1\ClassLibrary1.csproj", "{9B73BB5B-06A3-46F3-9068-E3607A8217B0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9B73BB5B-06A3-46F3-9068-E3607A8217B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9B73BB5B-06A3-46F3-9068-E3607A8217B0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9B73BB5B-06A3-46F3-9068-E3607A8217B0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9B73BB5B-06A3-46F3-9068-E3607A8217B0}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/tests/frosting/net8.0/src/ClassLibrary1/Class1.cs b/tests/frosting/net8.0/src/ClassLibrary1/Class1.cs new file mode 100644 index 00000000..4ea00049 --- /dev/null +++ b/tests/frosting/net8.0/src/ClassLibrary1/Class1.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ClassLibrary1 +{ + public class Class1 + { + public void Foo() + { + var foo = "foo"; + var bar = "bar"; + if (!string.IsNullOrEmpty(foo) && !string.IsNullOrEmpty(bar)) + { + var foobar = foo + bar; + } + } + + public void Bar() + { + var foo = "foo"; + var bar = "bar"; + if (!string.IsNullOrEmpty(foo) && !string.IsNullOrEmpty(bar)) + { + var foobar = foo + bar; + } + } + } +} diff --git a/tests/frosting/net8.0/src/ClassLibrary1/ClassLibrary1.csproj b/tests/frosting/net8.0/src/ClassLibrary1/ClassLibrary1.csproj new file mode 100644 index 00000000..9ec4dd90 --- /dev/null +++ b/tests/frosting/net8.0/src/ClassLibrary1/ClassLibrary1.csproj @@ -0,0 +1,21 @@ + + + + netstandard2.0 + + + + + all + 3.0.0 + + + all + 1.1.118 + + + + + + + \ No newline at end of file diff --git a/tests/script-runner/.config/dotnet-tools.json b/tests/script-runner/.config/dotnet-tools.json index 831d039b..da200cda 100644 --- a/tests/script-runner/.config/dotnet-tools.json +++ b/tests/script-runner/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "cake.tool": { - "version": "3.0.0", + "version": "4.0.0", "commands": [ "dotnet-cake" ]