diff --git a/src/Cake.DotNetTool.Module/DotNetToolPackageInstaller.cs b/src/Cake.DotNetTool.Module/DotNetToolPackageInstaller.cs index cd0bebaf0b..de8ac9b571 100644 --- a/src/Cake.DotNetTool.Module/DotNetToolPackageInstaller.cs +++ b/src/Cake.DotNetTool.Module/DotNetToolPackageInstaller.cs @@ -246,7 +246,11 @@ private static ProcessArgumentBuilder GetArguments( { if (definition.Address != null) { +#if NET9_0_OR_GREATER + arguments.Append("--source"); +#else arguments.Append("--add-source"); +#endif arguments.AppendQuoted(definition.Address.AbsoluteUri); } diff --git a/tests/integration/Cake.DotNetTool.Module/Cake.DotNetTool.Module.cake b/tests/integration/Cake.DotNetTool.Module/Cake.DotNetTool.Module.cake index 275aa31791..44af4c69d3 100644 --- a/tests/integration/Cake.DotNetTool.Module/Cake.DotNetTool.Module.cake +++ b/tests/integration/Cake.DotNetTool.Module/Cake.DotNetTool.Module.cake @@ -33,7 +33,46 @@ Task("Cake.DotNetTool.Module.Update") CakeExecuteScript(scriptPath); }); +Task("Cake.DotNetTool.Module.Source.Setup") + .Does(() => +{ + var path = Paths.Temp.Combine("./Cake.DotNetTool.Module.Source"); + CleanDirectory(path); +}); + +Task("Cake.DotNetTool.Module.Source.Install") + .IsDependentOn("Cake.DotNetTool.Module.Source.Setup") + .Does(() => +{ + // Given — explicit NuGet source (see https://github.com/cake-build/cake/issues/4834) + var scriptPath = Paths.Temp.Combine("./Cake.DotNetTool.Module.Source/").CombineWithFilePath("build.cake"); + var script = "#tool \"dotnet:https://api.nuget.org/v3/index.json?package=GitVersion.Tool&version=6.6.2\""; + System.IO.File.WriteAllText(scriptPath.FullPath, script); + + // When + CakeExecuteScript(scriptPath); +}); + +Task("Cake.DotNetTool.Module.Source.Update") + .IsDependentOn("Cake.DotNetTool.Module.Source.Install") + .Does(() => +{ + // Given — same source, newer tool version (see https://cakebuild.net/docs/writing-builds/tools/installing-tools) + var scriptPath = Paths.Temp.Combine("./Cake.DotNetTool.Module.Source/").CombineWithFilePath("build.cake"); + var script = "#tool \"dotnet:https://api.nuget.org/v3/index.json?package=GitVersion.Tool&version=6.7.0\""; + System.IO.File.WriteAllText(scriptPath.FullPath, script); + + // When + CakeExecuteScript(scriptPath); +}); + +Task("Cake.DotNetTool.Module.Source") + .IsDependentOn("Cake.DotNetTool.Module.Source.Setup") + .IsDependentOn("Cake.DotNetTool.Module.Source.Install") + .IsDependentOn("Cake.DotNetTool.Module.Source.Update"); + Task("Cake.DotNetTool.Module") .IsDependentOn("Cake.DotNetTool.Module.Setup") .IsDependentOn("Cake.DotNetTool.Module.Install") - .IsDependentOn("Cake.DotNetTool.Module.Update"); + .IsDependentOn("Cake.DotNetTool.Module.Update") + .IsDependentOn("Cake.DotNetTool.Module.Source");