Skip to content

Commit c4f861c

Browse files
committed
..
1 parent dc71ec1 commit c4f861c

10 files changed

Lines changed: 255 additions & 80 deletions

File tree

build/paths.cake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public record BuildPaths(
4040
integrationTestsBinTool);
4141

4242
FilePath signClientPath = null;
43-
if (context.IsRunningOnWindows())
43+
if (context.IsRunningOnWindows() && context.GitHubActions().IsRunningOnGitHubActions)
4444
{
4545
signClientPath = context.Tools.Resolve("sign.exe");
4646

src/Cake.Common.Tests/Unit/Tools/DotNet/Tool/DotNetToolCommandTests.cs

Lines changed: 68 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,62 @@ public static IEnumerable<object[]> RequiredCommandArgumentCases()
6767
}
6868
}
6969

70+
[Fact]
71+
public void DotNetToolInstall_WithDefaultSettings_RendersCakeToolsPath()
72+
{
73+
// Given
74+
var fixture = new DotNetToolCommandFixture
75+
{
76+
Invocation = DotNetToolCommandInvocation.InstallFull,
77+
CommandArgument = "dotnetsay"
78+
};
79+
80+
// When
81+
var result = fixture.Run();
82+
83+
// Then
84+
Assert.Equal("\"tool\" install dotnetsay --tool-path \"/Working/tools\"", result.Args);
85+
}
86+
87+
[Fact]
88+
public void DotNetToolInstall_WithToolPathScopeAndWorkingDirectory_RendersToolsPathRelativeToWorkingDirectory()
89+
{
90+
// Given
91+
var fixture = new DotNetToolCommandFixture
92+
{
93+
Invocation = DotNetToolCommandInvocation.InstallFull,
94+
CommandArgument = "dotnetsay"
95+
};
96+
fixture.InstallSettings.WorkingDirectory = "./temp";
97+
98+
// When
99+
var result = fixture.Run();
100+
101+
// Then
102+
Assert.Equal("\"tool\" install dotnetsay --tool-path \"/Working/temp/tools\"", result.Args);
103+
}
104+
105+
[Theory]
106+
[InlineData(DotNetToolInstallationScope.Global, "--global")]
107+
[InlineData(DotNetToolInstallationScope.Local, "--local")]
108+
[InlineData(DotNetToolInstallationScope.ToolPath, "--tool-path \"/Working/tools\"")]
109+
public void DotNetToolInstall_WithInstallationScope_RendersSingleScopeFlag(DotNetToolInstallationScope scope, string expectedScopeArgument)
110+
{
111+
// Given
112+
var fixture = new DotNetToolCommandFixture
113+
{
114+
Invocation = DotNetToolCommandInvocation.InstallFull,
115+
CommandArgument = "dotnetsay"
116+
};
117+
fixture.InstallSettings.InstallationScope = scope;
118+
119+
// When
120+
var result = fixture.Run();
121+
122+
// Then
123+
Assert.Equal($"\"tool\" install dotnetsay {expectedScopeArgument}", result.Args);
124+
}
125+
70126
[Fact]
71127
public void DotNetToolExecute_WithDefaultSettings_RendersExpectedCommand()
72128
{
@@ -208,7 +264,7 @@ public void DotNetToolCommands_RenderCommandSpecificSettings()
208264
Invocation = DotNetToolCommandInvocation.InstallFull,
209265
CommandArgument = "dotnetsay"
210266
};
211-
fixture.InstallSettings.Global = true;
267+
fixture.InstallSettings.InstallationScope = DotNetToolInstallationScope.ToolPath;
212268
fixture.InstallSettings.ToolInstallationPath = "./tools";
213269
fixture.InstallSettings.Version = "1.2.3";
214270
fixture.InstallSettings.ConfigFile = "./nuget.config";
@@ -230,7 +286,7 @@ public void DotNetToolCommands_RenderCommandSpecificSettings()
230286
var result = fixture.Run();
231287

232288
// Then
233-
var expected = "\"tool\" install dotnetsay --global --tool-path \"/Working/tools\" --version \"1.2.3\" --configfile \"/Working/nuget.config\" --source \"https://example.com/source\" --add-source \"https://example.com/add-source\" --prerelease --tool-manifest \"/Working/.config/dotnet-tools.json\" --framework \"net10.0\" --disable-parallel --ignore-failed-sources --no-http-cache --interactive --allow-downgrade --arch \"x64\" --create-manifest-if-needed --allow-roll-forward";
289+
var expected = "\"tool\" install dotnetsay --tool-path \"/Working/tools\" --version \"1.2.3\" --configfile \"/Working/nuget.config\" --source \"https://example.com/source\" --add-source \"https://example.com/add-source\" --prerelease --tool-manifest \"/Working/.config/dotnet-tools.json\" --framework \"net10.0\" --disable-parallel --ignore-failed-sources --no-http-cache --interactive --allow-downgrade --arch \"x64\" --create-manifest-if-needed --allow-roll-forward";
234290
Assert.Equal(expected, result.Args);
235291
}
236292

@@ -271,15 +327,14 @@ public void DotNetToolList_RenderCommandSpecificSettings()
271327
Invocation = DotNetToolCommandInvocation.ListFull,
272328
CommandArgument = "dotnetsay"
273329
};
274-
fixture.ListSettings.Local = true;
275-
fixture.ListSettings.ToolInstallationPath = "./tools";
330+
fixture.ListSettings.InstallationScope = DotNetToolInstallationScope.Local;
276331
fixture.ListSettings.Format = DotNetToolListFormat.Json;
277332

278333
// When
279334
var result = fixture.Run();
280335

281336
// Then
282-
var expected = "\"tool\" list dotnetsay --local --tool-path \"/Working/tools\" --format json";
337+
var expected = "\"tool\" list dotnetsay --local --format json";
283338
Assert.Equal(expected, result.Args);
284339
}
285340

@@ -378,15 +433,14 @@ public void DotNetToolUninstall_RenderCommandSpecificSettings()
378433
Invocation = DotNetToolCommandInvocation.UninstallFull,
379434
CommandArgument = "dotnetsay"
380435
};
381-
fixture.UninstallSettings.Local = true;
382-
fixture.UninstallSettings.ToolInstallationPath = "./tools";
436+
fixture.UninstallSettings.InstallationScope = DotNetToolInstallationScope.Local;
383437
fixture.UninstallSettings.ToolManifest = "./.config/dotnet-tools.json";
384438

385439
// When
386440
var result = fixture.Run();
387441

388442
// Then
389-
var expected = "\"tool\" uninstall dotnetsay --local --tool-path \"/Working/tools\" --tool-manifest \"/Working/.config/dotnet-tools.json\"";
443+
var expected = "\"tool\" uninstall dotnetsay --local --tool-manifest \"/Working/.config/dotnet-tools.json\"";
390444
Assert.Equal(expected, result.Args);
391445
}
392446

@@ -399,8 +453,7 @@ public void DotNetToolUpdate_RenderCommandSpecificSettings()
399453
Invocation = DotNetToolCommandInvocation.UpdateFull,
400454
CommandArgument = null
401455
};
402-
fixture.UpdateSettings.Global = true;
403-
fixture.UpdateSettings.ToolInstallationPath = "./tools";
456+
fixture.UpdateSettings.InstallationScope = DotNetToolInstallationScope.Global;
404457
fixture.UpdateSettings.Version = "1.2.3";
405458
fixture.UpdateSettings.ConfigFile = "./nuget.config";
406459
fixture.UpdateSettings.Source.Add("https://example.com/source");
@@ -419,7 +472,7 @@ public void DotNetToolUpdate_RenderCommandSpecificSettings()
419472
var result = fixture.Run();
420473

421474
// Then
422-
var expected = "\"tool\" update --global --tool-path \"/Working/tools\" --version \"1.2.3\" --configfile \"/Working/nuget.config\" --source \"https://example.com/source\" --add-source \"https://example.com/add-source\" --prerelease --tool-manifest \"/Working/.config/dotnet-tools.json\" --framework \"net10.0\" --disable-parallel --ignore-failed-sources --no-http-cache --interactive --allow-downgrade --all";
475+
var expected = "\"tool\" update --global --version \"1.2.3\" --configfile \"/Working/nuget.config\" --source \"https://example.com/source\" --add-source \"https://example.com/add-source\" --prerelease --tool-manifest \"/Working/.config/dotnet-tools.json\" --framework \"net10.0\" --disable-parallel --ignore-failed-sources --no-http-cache --interactive --allow-downgrade --all";
423476
Assert.Equal(expected, result.Args);
424477
}
425478

@@ -511,10 +564,10 @@ public void ConfigureCommonSettings()
511564
ExecuteArguments = Arguments("--tool-option", "tool-value");
512565

513566
InstallSettings.Verbosity = DotNetVerbosity.Minimal;
514-
InstallSettings.Global = true;
567+
InstallSettings.InstallationScope = DotNetToolInstallationScope.Global;
515568

516569
ListSettings.Verbosity = DotNetVerbosity.Minimal;
517-
ListSettings.Global = true;
570+
ListSettings.InstallationScope = DotNetToolInstallationScope.Global;
518571

519572
RestoreSettings.Verbosity = DotNetVerbosity.Minimal;
520573
RestoreSettings.DisableParallel = true;
@@ -526,10 +579,10 @@ public void ConfigureCommonSettings()
526579
SearchSettings.Detail = true;
527580

528581
UninstallSettings.Verbosity = DotNetVerbosity.Minimal;
529-
UninstallSettings.Global = true;
582+
UninstallSettings.InstallationScope = DotNetToolInstallationScope.Global;
530583

531584
UpdateSettings.Verbosity = DotNetVerbosity.Minimal;
532-
UpdateSettings.Global = true;
585+
UpdateSettings.InstallationScope = DotNetToolInstallationScope.Global;
533586
}
534587

535588
protected override void RunTool()

src/Cake.Common/Tools/DotNet/DotNetAliases.Tool.Common.cs

Lines changed: 35 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System.Collections.Generic;
77
using Cake.Common.Tools.DotNet.Tool;
88
using Cake.Core;
9+
using Cake.Core.Configuration;
910
using Cake.Core.IO;
1011

1112
namespace Cake.Common.Tools.DotNet
@@ -123,11 +124,9 @@ private static void AppendToolExecuteSettings(ProcessArgumentBuilder builder, Do
123124
AppendRestoreSettings(builder, settings.DisableParallel, settings.IgnoreFailedSources, settings.NoHttpCache, settings.Interactive);
124125
}
125126

126-
private static void AppendToolInstallSettings(ProcessArgumentBuilder builder, DotNetToolInstallSettings settings, ICakeEnvironment environment)
127+
private static void AppendToolInstallSettings(ProcessArgumentBuilder builder, DotNetToolInstallSettings settings, ICakeConfiguration configuration, ICakeEnvironment environment)
127128
{
128-
AppendSwitch(builder, "--global", settings.Global);
129-
AppendSwitch(builder, "--local", settings.Local);
130-
AppendDirectoryPath(builder, "--tool-path", settings.ToolInstallationPath, environment);
129+
AppendInstallationScope(builder, settings.InstallationScope, settings.ToolInstallationPath, settings.WorkingDirectory, configuration, environment);
131130
AppendPackageResolutionSettings(builder, settings.Version, settings.ConfigFile, settings.Source, settings.AddSource, settings.Prerelease, environment);
132131
AppendFilePath(builder, "--tool-manifest", settings.ToolManifest, environment);
133132
AppendString(builder, "--framework", settings.Framework);
@@ -138,11 +137,11 @@ private static void AppendToolInstallSettings(ProcessArgumentBuilder builder, Do
138137
AppendSwitch(builder, "--allow-roll-forward", settings.AllowRollForward);
139138
}
140139

141-
private static void AppendToolListSettings(ProcessArgumentBuilder builder, DotNetToolListSettings settings, ICakeEnvironment environment)
140+
private static void AppendToolListSettings(ProcessArgumentBuilder builder, DotNetToolListSettings settings, ICakeConfiguration configuration, ICakeEnvironment environment)
142141
{
143-
AppendSwitch(builder, "--global", settings.Global);
144-
AppendSwitch(builder, "--local", settings.Local);
145-
AppendDirectoryPath(builder, "--tool-path", settings.ToolInstallationPath, environment);
142+
AppendInstallationScope(builder, settings.InstallationScope, settings.ToolInstallationPath, settings.WorkingDirectory, configuration, environment);
143+
144+
AppendFilePath(builder, "--tool-manifest", settings.ToolManifest, environment);
146145

147146
if (settings.Format.HasValue)
148147
{
@@ -180,19 +179,15 @@ private static void AppendToolSearchSettings(ProcessArgumentBuilder builder, Dot
180179
AppendSwitch(builder, "--prerelease", settings.Prerelease);
181180
}
182181

183-
private static void AppendToolUninstallSettings(ProcessArgumentBuilder builder, DotNetToolUninstallSettings settings, ICakeEnvironment environment)
182+
private static void AppendToolUninstallSettings(ProcessArgumentBuilder builder, DotNetToolUninstallSettings settings, ICakeConfiguration configuration, ICakeEnvironment environment)
184183
{
185-
AppendSwitch(builder, "--global", settings.Global);
186-
AppendSwitch(builder, "--local", settings.Local);
187-
AppendDirectoryPath(builder, "--tool-path", settings.ToolInstallationPath, environment);
184+
AppendInstallationScope(builder, settings.InstallationScope, settings.ToolInstallationPath, settings.WorkingDirectory, configuration, environment);
188185
AppendFilePath(builder, "--tool-manifest", settings.ToolManifest, environment);
189186
}
190187

191-
private static void AppendToolUpdateSettings(ProcessArgumentBuilder builder, DotNetToolUpdateSettings settings, ICakeEnvironment environment)
188+
private static void AppendToolUpdateSettings(ProcessArgumentBuilder builder, DotNetToolUpdateSettings settings, ICakeConfiguration configuration, ICakeEnvironment environment)
192189
{
193-
AppendSwitch(builder, "--global", settings.Global);
194-
AppendSwitch(builder, "--local", settings.Local);
195-
AppendDirectoryPath(builder, "--tool-path", settings.ToolInstallationPath, environment);
190+
AppendInstallationScope(builder, settings.InstallationScope, settings.ToolInstallationPath, settings.WorkingDirectory, configuration, environment);
196191
AppendPackageResolutionSettings(builder, settings.Version, settings.ConfigFile, settings.Source, settings.AddSource, settings.Prerelease, environment);
197192
AppendFilePath(builder, "--tool-manifest", settings.ToolManifest, environment);
198193
AppendString(builder, "--framework", settings.Framework);
@@ -201,6 +196,30 @@ private static void AppendToolUpdateSettings(ProcessArgumentBuilder builder, Dot
201196
AppendSwitch(builder, "--all", settings.All);
202197
}
203198

199+
private static void AppendInstallationScope(
200+
ProcessArgumentBuilder builder,
201+
DotNetToolInstallationScope scope,
202+
DirectoryPath toolInstallationPath,
203+
DirectoryPath settingsWorkingDirectory,
204+
ICakeConfiguration configuration,
205+
ICakeEnvironment environment)
206+
{
207+
switch (scope)
208+
{
209+
case DotNetToolInstallationScope.Global:
210+
builder.Append("--global");
211+
break;
212+
case DotNetToolInstallationScope.Local:
213+
builder.Append("--local");
214+
break;
215+
case DotNetToolInstallationScope.ToolPath:
216+
var root = settingsWorkingDirectory ?? environment.WorkingDirectory;
217+
var path = toolInstallationPath ?? configuration.GetToolPath(root, environment);
218+
AppendDirectoryPath(builder, "--tool-path", path, environment);
219+
break;
220+
}
221+
}
222+
204223
private static void AppendPackageResolutionSettings(
205224
ProcessArgumentBuilder builder,
206225
string version,

src/Cake.Common/Tools/DotNet/DotNetAliases.Tool.Install.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public static void DotNetToolInstall(this ICakeContext context, string packageId
6060

6161
var arguments = new ProcessArgumentBuilder().Append("install");
6262
AppendRequiredArgument(arguments, packageId, nameof(packageId));
63-
AppendToolInstallSettings(arguments, settings, context.Environment);
63+
AppendToolInstallSettings(arguments, settings, context.Configuration, context.Environment);
6464
RunDotNetToolCommand(context, null, arguments, settings);
6565
}
6666
}

src/Cake.Common/Tools/DotNet/DotNetAliases.Tool.List.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public static void DotNetToolList(this ICakeContext context)
4545
/// <code>
4646
/// DotNetToolList(new DotNetToolListSettings
4747
/// {
48-
/// Local = true,
48+
/// InstallationScope = DotNetToolInstallationScope.Local,
4949
/// WorkingDirectory = "./src"
5050
/// });
5151
/// </code>
@@ -86,7 +86,7 @@ public static void DotNetToolList(this ICakeContext context, string packageId)
8686
/// <code>
8787
/// DotNetToolList("DPI", new DotNetToolListSettings
8888
/// {
89-
/// Local = true,
89+
/// InstallationScope = DotNetToolInstallationScope.Local,
9090
/// WorkingDirectory = "./src"
9191
/// });
9292
/// </code>
@@ -100,7 +100,7 @@ public static void DotNetToolList(this ICakeContext context, string packageId, D
100100

101101
var arguments = new ProcessArgumentBuilder().Append("list");
102102
AppendOptionalArgument(arguments, packageId);
103-
AppendToolListSettings(arguments, settings, context.Environment);
103+
AppendToolListSettings(arguments, settings, context.Configuration, context.Environment);
104104
RunDotNetToolCommandWithoutVerbosity(context, null, arguments, settings);
105105
}
106106
}

src/Cake.Common/Tools/DotNet/DotNetAliases.Tool.Run.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public static void DotNetToolRun(this ICakeContext context, string commandName,
8080

8181
var dotnetArguments = new ProcessArgumentBuilder().Append("run");
8282
AppendRequiredArgument(dotnetArguments, commandName, nameof(commandName));
83-
AppendToolRunSettings(dotnetArguments, settings);
83+
AppendToolRunSettings(dotnetArguments, settings, context.Environment);
8484
RunDotNetToolCommandWithForwardedArgumentsWithoutVerbosity(context, null, dotnetArguments, arguments, settings);
8585
}
8686

src/Cake.Common/Tools/DotNet/DotNetAliases.Tool.Uninstall.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public static void DotNetToolUninstall(this ICakeContext context, string package
6060

6161
var arguments = new ProcessArgumentBuilder().Append("uninstall");
6262
AppendRequiredArgument(arguments, packageId, nameof(packageId));
63-
AppendToolUninstallSettings(arguments, settings, context.Environment);
63+
AppendToolUninstallSettings(arguments, settings, context.Configuration, context.Environment);
6464
RunDotNetToolCommandWithoutVerbosity(context, null, arguments, settings);
6565
}
6666
}

src/Cake.Common/Tools/DotNet/DotNetAliases.Tool.Update.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public static void DotNetToolUpdate(this ICakeContext context, string packageId,
9090

9191
var arguments = new ProcessArgumentBuilder().Append("update");
9292
AppendOptionalArgument(arguments, packageId);
93-
AppendToolUpdateSettings(arguments, settings, context.Environment);
93+
AppendToolUpdateSettings(arguments, settings, context.Configuration, context.Environment);
9494
RunDotNetToolCommand(context, null, arguments, settings);
9595
}
9696
}

0 commit comments

Comments
 (0)