Skip to content

Commit 8494364

Browse files
--no-cache option for tool install locally
1 parent 98ac92e commit 8494364

File tree

4 files changed

+25
-13
lines changed

4 files changed

+25
-13
lines changed

src/Cli/dotnet/ToolPackage/IToolPackageDownloader.cs

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33

44
using System.Threading.Tasks;
5+
using Microsoft.DotNet.Cli.NuGetPackageDownloader;
56
using Microsoft.DotNet.ToolPackage;
67
using NuGet.Versioning;
78

@@ -13,7 +14,8 @@ IToolPackage InstallPackage(PackageLocation packageLocation, PackageId packageId
1314
VerbosityOptions verbosity,
1415
VersionRange versionRange = null,
1516
string targetFramework = null,
16-
bool isGlobalTool = false
17+
bool isGlobalTool = false,
18+
RestoreActionConfig restoreActionConfig = null
1719
);
1820
}
1921
}

src/Cli/dotnet/ToolPackage/ToolPackageDownloader.cs

+10-8
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public ToolPackageDownloader(
6363
_globalToolStageDir = _toolPackageStore.GetRandomStagingDirectory();
6464
ISettings settings = Settings.LoadDefaultSettings(Directory.GetCurrentDirectory());
6565
_localToolDownloadDir = new DirectoryPath(SettingsUtility.GetGlobalPackagesFolder(settings));
66-
66+
6767
_localToolAssetDir = new DirectoryPath(PathUtilities.CreateTempSubdirectory());
6868
_runtimeJsonPath = runtimeJsonPathForTests ?? Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "RuntimeIdentifierGraph.json");
6969
}
@@ -72,7 +72,8 @@ public IToolPackage InstallPackage(PackageLocation packageLocation, PackageId pa
7272
VerbosityOptions verbosity = VerbosityOptions.normal,
7373
VersionRange versionRange = null,
7474
string targetFramework = null,
75-
bool isGlobalTool = false
75+
bool isGlobalTool = false,
76+
RestoreActionConfig restoreActionConfig = null
7677
)
7778
{
7879
var packageRootDirectory = _toolPackageStore.GetRootPackageDirectory(packageId);
@@ -95,12 +96,13 @@ public IToolPackage InstallPackage(PackageLocation packageLocation, PackageId pa
9596

9697
var toolDownloadDir = isGlobalTool ? _globalToolStageDir : _localToolDownloadDir;
9798
var assetFileDirectory = isGlobalTool ? _globalToolStageDir : _localToolAssetDir;
98-
var nugetPackageDownloader = new NuGetPackageDownloader.NuGetPackageDownloader(toolDownloadDir, verboseLogger: nugetLogger, isNuGetTool: true);
99+
100+
var nugetPackageDownloader = new NuGetPackageDownloader.NuGetPackageDownloader(toolDownloadDir, verboseLogger: nugetLogger, isNuGetTool: true, restoreActionConfig: restoreActionConfig);
99101

100102
var packageSourceLocation = new PackageSourceLocation(packageLocation.NugetConfig, packageLocation.RootConfigDirectory, null, packageLocation.AdditionalFeeds);
101103
NuGetVersion packageVersion = nugetPackageDownloader.GetBestPackageVersionAsync(packageId, versionRange, packageSourceLocation).GetAwaiter().GetResult();
102104

103-
rollbackDirectory = isGlobalTool ? toolDownloadDir.Value: Path.Combine(toolDownloadDir.Value, packageId.ToString(), packageVersion.ToString());
105+
rollbackDirectory = isGlobalTool ? toolDownloadDir.Value : Path.Combine(toolDownloadDir.Value, packageId.ToString(), packageVersion.ToString());
104106

105107
if (isGlobalTool)
106108
{
@@ -123,15 +125,15 @@ public IToolPackage InstallPackage(PackageLocation packageLocation, PackageId pa
123125
{
124126
DownloadAndExtractPackage(packageLocation, packageId, nugetPackageDownloader, toolDownloadDir.Value, _toolPackageStore, packageVersion, packageSourceLocation).GetAwaiter().GetResult();
125127
}
126-
else if(isGlobalTool)
128+
else if (isGlobalTool)
127129
{
128130
throw new ToolPackageException(
129131
string.Format(
130132
CommonLocalizableStrings.ToolPackageConflictPackageId,
131133
packageId,
132134
packageVersion.ToNormalizedString()));
133135
}
134-
136+
135137
CreateAssetFile(packageId, packageVersion, toolDownloadDir, assetFileDirectory, _runtimeJsonPath, targetFramework);
136138

137139
DirectoryPath toolReturnPackageDirectory;
@@ -303,9 +305,9 @@ private static void CreateAssetFile(
303305
var managedCriteria = new List<SelectionCriteria>(1);
304306
// Use major.minor version of currently running version of .NET
305307
NuGetFramework currentTargetFramework;
306-
if(targetFramework != null)
308+
if (targetFramework != null)
307309
{
308-
currentTargetFramework = NuGetFramework.Parse(targetFramework);
310+
currentTargetFramework = NuGetFramework.Parse(targetFramework);
309311
}
310312
else
311313
{

src/Cli/dotnet/commands/dotnet-tool/install/ToolInstallLocalInstaller.cs

+9-3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.CommandLine;
55
using System.IO;
66
using Microsoft.DotNet.Cli;
7+
using Microsoft.DotNet.Cli.NuGetPackageDownloader;
78
using Microsoft.DotNet.Cli.ToolPackage;
89
using Microsoft.DotNet.Cli.Utils;
910
using Microsoft.DotNet.ToolPackage;
@@ -24,6 +25,7 @@ internal class ToolInstallLocalInstaller
2425
private readonly string _configFilePath;
2526
private readonly string[] _sources;
2627
private readonly VerbosityOptions _verbosity;
28+
private readonly RestoreActionConfig _restoreActionConfig;
2729

2830
public ToolInstallLocalInstaller(
2931
ParseResult parseResult,
@@ -43,8 +45,11 @@ public ToolInstallLocalInstaller(
4345
additionalRestoreArguments: parseResult.OptionValuesToBeForwarded(ToolInstallCommandParser.GetCommand()));
4446
_toolPackageStore = toolPackageStoresAndDownloader.store;
4547
_toolPackageDownloader = toolPackageDownloader?? toolPackageStoresAndDownloader.downloader;
46-
47-
48+
_restoreActionConfig = new RestoreActionConfig(DisableParallel: parseResult.GetValue(ToolCommandRestorePassThroughOptions.DisableParallelOption),
49+
NoCache: parseResult.GetValue(ToolCommandRestorePassThroughOptions.NoCacheOption),
50+
IgnoreFailedSources: parseResult.GetValue(ToolCommandRestorePassThroughOptions.IgnoreFailedSourcesOption),
51+
Interactive: parseResult.GetValue(ToolCommandRestorePassThroughOptions.InteractiveRestoreOption));
52+
4853
TargetFrameworkToInstall = BundledTargetFramework.GetTargetFrameworkMoniker();
4954
}
5055

@@ -76,7 +81,8 @@ public IToolPackage Install(FilePath manifestFile)
7681
_packageId,
7782
verbosity: _verbosity,
7883
versionRange,
79-
TargetFrameworkToInstall
84+
TargetFrameworkToInstall,
85+
restoreActionConfig: _restoreActionConfig
8086
);
8187

8288
return toolDownloadedPackage;

src/Tests/Microsoft.DotNet.Tools.Tests.ComponentMocks/ToolPackageDownloaderMock.cs

+3-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
using Microsoft.DotNet.ToolPackage;
1313
using Microsoft.Extensions.EnvironmentAbstractions;
1414
using Microsoft.NET.TestFramework.Utilities;
15+
using Microsoft.DotNet.Cli.NuGetPackageDownloader;
1516
using NuGet.Frameworks;
1617
using NuGet.Versioning;
1718
using LocalizableStrings = Microsoft.DotNet.Tools.Tool.Install.LocalizableStrings;
@@ -96,7 +97,8 @@ public IToolPackage InstallPackage(PackageLocation packageLocation, PackageId pa
9697
VerbosityOptions verbosity,
9798
VersionRange versionRange = null,
9899
string targetFramework = null,
99-
bool isGlobalTool = false
100+
bool isGlobalTool = false,
101+
RestoreActionConfig restoreActionConfig = null
100102
)
101103
{
102104
string rollbackDirectory = null;

0 commit comments

Comments
 (0)