Skip to content

Commit

Permalink
(cake-buildGH-2904) Make Frosting tool installer respect tools path c…
Browse files Browse the repository at this point in the history
…onfiguration option
  • Loading branch information
Dieter Verfaillie authored and pascalberger committed Jan 19, 2021
1 parent 2966242 commit 00482a0
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
1 change: 1 addition & 0 deletions src/Cake.Core/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,6 @@
[assembly: InternalsVisibleTo("Cake")]
[assembly: InternalsVisibleTo("Cake.Tool")]
[assembly: InternalsVisibleTo("Cake.Common")]
[assembly: InternalsVisibleTo("Cake.Frosting")]
[assembly: InternalsVisibleTo("Cake.Core.Tests")]
[assembly: InternalsVisibleTo("Cake.Testing.Xunit")]
22 changes: 19 additions & 3 deletions src/Cake.Frosting/Internal/ToolInstaller.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@
using System.Collections.Generic;
using System.Globalization;
using System.Linq;

using Cake.Core;
using Cake.Core.Configuration;
using Cake.Core.IO;
using Cake.Core.Packaging;
using Cake.Core.Tooling;

Expand All @@ -14,20 +17,22 @@ namespace Cake.Frosting.Internal
internal sealed class ToolInstaller : IToolInstaller
{
private readonly ICakeEnvironment _environment;
private readonly ICakeConfiguration _configuration;
private readonly IToolLocator _locator;
private readonly List<IPackageInstaller> _installers;

public ToolInstaller(ICakeEnvironment environment, IToolLocator locator, IEnumerable<IPackageInstaller> installers)
public ToolInstaller(ICakeEnvironment environment, ICakeConfiguration configuration, IToolLocator locator, IEnumerable<IPackageInstaller> installers)
{
_environment = environment;
_configuration = configuration;
_locator = locator;
_installers = new List<IPackageInstaller>(installers ?? Enumerable.Empty<IPackageInstaller>());
}

public void Install(PackageReference tool)
{
// Get the tool path.
var root = _environment.WorkingDirectory.Combine("tools").MakeAbsolute(_environment);
var toolsPath = GetToolsPath();

// Get the installer.
var installer = _installers.FirstOrDefault(i => i.CanInstall(tool, PackageType.Tool));
Expand All @@ -39,7 +44,7 @@ public void Install(PackageReference tool)
}

// Install the tool.
var result = installer.Install(tool, PackageType.Tool, root);
var result = installer.Install(tool, PackageType.Tool, toolsPath);
if (result.Count == 0)
{
const string format = "Failed to install tool '{0}'.";
Expand All @@ -53,5 +58,16 @@ public void Install(PackageReference tool)
_locator.RegisterFile(item.Path);
}
}

private DirectoryPath GetToolsPath()
{
var toolsPath = _configuration.GetValue(Constants.Paths.Tools);
if (!string.IsNullOrWhiteSpace(toolsPath))
{
return new DirectoryPath(toolsPath).MakeAbsolute(_environment);
}

return _environment.WorkingDirectory.Combine("tools").MakeAbsolute(_environment);
}
}
}

0 comments on commit 00482a0

Please sign in to comment.