Skip to content

Commit 5c80d2f

Browse files
--no-cache option for tool install locally
1 parent 53e1190 commit 5c80d2f

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,7 +96,8 @@ 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

@@ -106,7 +108,7 @@ public IToolPackage InstallPackage(PackageLocation packageLocation, PackageId pa
106108
}
107109
NuGetVersion packageVersion = nugetPackageDownloader.GetBestPackageVersionAsync(packageId, versionRange, packageSourceLocation).GetAwaiter().GetResult();
108110

109-
rollbackDirectory = isGlobalTool ? toolDownloadDir.Value: Path.Combine(toolDownloadDir.Value, packageId.ToString(), packageVersion.ToString());
111+
rollbackDirectory = isGlobalTool ? toolDownloadDir.Value : Path.Combine(toolDownloadDir.Value, packageId.ToString(), packageVersion.ToString());
110112

111113
if (isGlobalTool)
112114
{
@@ -129,15 +131,15 @@ public IToolPackage InstallPackage(PackageLocation packageLocation, PackageId pa
129131
{
130132
DownloadAndExtractPackage(packageLocation, packageId, nugetPackageDownloader, toolDownloadDir.Value, _toolPackageStore, packageVersion, packageSourceLocation, includeUnlisted: givenSpecificVersion).GetAwaiter().GetResult();
131133
}
132-
else if(isGlobalTool)
134+
else if (isGlobalTool)
133135
{
134136
throw new ToolPackageException(
135137
string.Format(
136138
CommonLocalizableStrings.ToolPackageConflictPackageId,
137139
packageId,
138140
packageVersion.ToNormalizedString()));
139141
}
140-
142+
141143
CreateAssetFile(packageId, packageVersion, toolDownloadDir, assetFileDirectory, _runtimeJsonPath, targetFramework);
142144

143145
DirectoryPath toolReturnPackageDirectory;
@@ -310,9 +312,9 @@ private static void CreateAssetFile(
310312
var managedCriteria = new List<SelectionCriteria>(1);
311313
// Use major.minor version of currently running version of .NET
312314
NuGetFramework currentTargetFramework;
313-
if(targetFramework != null)
315+
if (targetFramework != null)
314316
{
315-
currentTargetFramework = NuGetFramework.Parse(targetFramework);
317+
currentTargetFramework = NuGetFramework.Parse(targetFramework);
316318
}
317319
else
318320
{

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)