Skip to content

Commit

Permalink
Add Cake dotnet tool directive instructions (#8440)
Browse files Browse the repository at this point in the history
Addresses #8381
Relates to #8434
  • Loading branch information
augustoproiete authored Mar 10, 2021
1 parent 0be0f22 commit bd9271e
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 1 deletion.
8 changes: 7 additions & 1 deletion src/NuGetGallery/Extensions/CakeBuildManagerExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,19 @@ public static bool IsCakeExtension(this DisplayPackageViewModel model)

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

if (model.Prerelease)
{
reference += "&prerelease";
}

if (model.IsDotnetToolPackageType)
{
return $"#tool {reference}";
}

if (IsCakeAddin(model))
{
return $"#addin {reference}";
Expand Down
6 changes: 6 additions & 0 deletions src/NuGetGallery/Views/Packages/DisplayPackage.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@
AlertLevel = AlertLevel.Info,
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.",
},

new ThirdPartyPackageManagerViewModel("Cake", "https://cakebuild.net/support/nuget")
{
Id = "cake-dotnet-tool",
InstallPackageCommand = Model.GetCakeInstallPackageCommand(),
},
};
}
else if (Model.IsDotnetNewTemplatePackageType)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,40 @@ public void ReturnsFalse(string[] tags)

public class TheMethodGetCakeInstallPackageCommand
{
public class GivenADotnetToolPackage
{
[Fact]
public void ReturnsADotNetToolDirective()
{
var model = new DisplayPackageViewModel
{
IsDotnetToolPackageType = true,
Id = "dotnet-reportgenerator-globaltool",
Version = "1.0.0",
};

var actual = model.GetCakeInstallPackageCommand();

Assert.Equal("#tool dotnet:?package=dotnet-reportgenerator-globaltool&version=1.0.0", actual);
}

[Fact]
public void ReturnsADotNetToolDirectiveWithPrerelease()
{
var model = new DisplayPackageViewModel
{
IsDotnetToolPackageType = true,
Id = "dotnet-reportgenerator-globaltool",
Version = "1.0.0-preview",
Prerelease = true,
};

var actual = model.GetCakeInstallPackageCommand();

Assert.Equal("#tool dotnet:?package=dotnet-reportgenerator-globaltool&version=1.0.0-preview&prerelease", actual);
}
}

public class GivenAPackageWithTheCakeAddinTag
{
[Fact]
Expand Down

0 comments on commit bd9271e

Please sign in to comment.