Skip to content

Commit bd9271e

Browse files
Add Cake dotnet tool directive instructions (#8440)
Addresses #8381 Relates to #8434
1 parent 0be0f22 commit bd9271e

3 files changed

Lines changed: 47 additions & 1 deletion

File tree

src/NuGetGallery/Extensions/CakeBuildManagerExtensions.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,19 @@ public static bool IsCakeExtension(this DisplayPackageViewModel model)
1515

1616
public static string GetCakeInstallPackageCommand(this DisplayPackageViewModel model)
1717
{
18-
var reference = $"nuget:?package={model.Id}&version={model.Version}";
18+
var scheme = model.IsDotnetToolPackageType ? "dotnet" : "nuget";
19+
var reference = $"{scheme}:?package={model.Id}&version={model.Version}";
1920

2021
if (model.Prerelease)
2122
{
2223
reference += "&prerelease";
2324
}
2425

26+
if (model.IsDotnetToolPackageType)
27+
{
28+
return $"#tool {reference}";
29+
}
30+
2531
if (IsCakeAddin(model))
2632
{
2733
return $"#addin {reference}";

src/NuGetGallery/Views/Packages/DisplayPackage.cshtml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@
3636
AlertLevel = AlertLevel.Info,
3737
AlertMessage = "This package contains a <a href='https://aka.ms/global-tools'>.NET Core Global Tool</a> you can call from the shell/command line.",
3838
},
39+
40+
new ThirdPartyPackageManagerViewModel("Cake", "https://cakebuild.net/support/nuget")
41+
{
42+
Id = "cake-dotnet-tool",
43+
InstallPackageCommand = Model.GetCakeInstallPackageCommand(),
44+
},
3945
};
4046
}
4147
else if (Model.IsDotnetNewTemplatePackageType)

tests/NuGetGallery.Facts/Extensions/CakeBuildManagerExtensionsFacts.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,40 @@ public void ReturnsFalse(string[] tags)
4848

4949
public class TheMethodGetCakeInstallPackageCommand
5050
{
51+
public class GivenADotnetToolPackage
52+
{
53+
[Fact]
54+
public void ReturnsADotNetToolDirective()
55+
{
56+
var model = new DisplayPackageViewModel
57+
{
58+
IsDotnetToolPackageType = true,
59+
Id = "dotnet-reportgenerator-globaltool",
60+
Version = "1.0.0",
61+
};
62+
63+
var actual = model.GetCakeInstallPackageCommand();
64+
65+
Assert.Equal("#tool dotnet:?package=dotnet-reportgenerator-globaltool&version=1.0.0", actual);
66+
}
67+
68+
[Fact]
69+
public void ReturnsADotNetToolDirectiveWithPrerelease()
70+
{
71+
var model = new DisplayPackageViewModel
72+
{
73+
IsDotnetToolPackageType = true,
74+
Id = "dotnet-reportgenerator-globaltool",
75+
Version = "1.0.0-preview",
76+
Prerelease = true,
77+
};
78+
79+
var actual = model.GetCakeInstallPackageCommand();
80+
81+
Assert.Equal("#tool dotnet:?package=dotnet-reportgenerator-globaltool&version=1.0.0-preview&prerelease", actual);
82+
}
83+
}
84+
5185
public class GivenAPackageWithTheCakeAddinTag
5286
{
5387
[Fact]

0 commit comments

Comments
 (0)