Skip to content

Commit 2f5a992

Browse files
committed
plumbing: pass the user location through
1 parent 10c6a09 commit 2f5a992

File tree

20 files changed

+121
-74
lines changed

20 files changed

+121
-74
lines changed

eng/restore-toolset.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ function InitializeCustomSDKToolset {
2020
fi
2121

2222
InitializeDotNetCli true
23-
if [[ "$DISTRO" != "ubuntu" || "$MAJOR_VERSION" -le 16 ]]; then
24-
InstallDotNetSharedFramework "1.0.5"
25-
InstallDotNetSharedFramework "1.1.2"
26-
fi
23+
# if [[ "$DISTRO" != "ubuntu" || "$MAJOR_VERSION" -le 16 ]]; then
24+
# InstallDotNetSharedFramework "1.0.5"
25+
# InstallDotNetSharedFramework "1.1.2"
26+
# fi
2727
InstallDotNetSharedFramework "2.1.0"
2828
InstallDotNetSharedFramework "2.2.8"
2929
InstallDotNetSharedFramework "3.1.0"

src/Cli/dotnet/commands/dotnet-new/OptionalWorkloadProvider.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System.IO;
77
using System.Threading;
88
using System.Threading.Tasks;
9+
using Microsoft.DotNet.Configurer;
910

1011
namespace Microsoft.DotNet.Tools.New
1112
{
@@ -35,8 +36,9 @@ public Task<IReadOnlyList<ITemplatePackage>> GetAllTemplatePackagesAsync(Cancell
3536
var sdkDirectory = Path.GetDirectoryName(typeof(DotnetFiles).Assembly.Location);
3637
var sdkVersion = Path.GetFileName(sdkDirectory);
3738
var dotnetRootPath = Path.GetDirectoryName(Path.GetDirectoryName(sdkDirectory));
39+
var userHome = CliFolderPathCalculator.DotnetHomePath;
3840

39-
var packages = optionalWorkloadLocator.GetDotnetSdkTemplatePackages(sdkVersion, dotnetRootPath);
41+
var packages = optionalWorkloadLocator.GetDotnetSdkTemplatePackages(sdkVersion, dotnetRootPath, userHome);
4042
var fileSystem = _environmentSettings.Host.FileSystem;
4143
foreach (var packageInfo in packages)
4244
{

src/Cli/dotnet/commands/dotnet-workload/install/WorkloadInstallCommand.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public WorkloadInstallCommand(
7171
_dotnetPath = dotnetDir ?? Path.GetDirectoryName(Environment.ProcessPath);
7272
_sdkVersion = WorkloadOptionsExtensions.GetValidatedSdkVersion(parseResult.ValueForOption<string>(WorkloadInstallCommandParser.VersionOption), version, _dotnetPath);
7373
_sdkFeatureBand = new SdkFeatureBand(string.Join('.', _sdkVersion.Major, _sdkVersion.Minor, _sdkVersion.SdkFeatureBand));
74+
_userHome = userHome ?? CliFolderPathCalculator.DotnetHomePath;
7475
_tempDirPath = tempDirPath ?? (string.IsNullOrWhiteSpace(parseResult.ValueForOption<string>(WorkloadInstallCommandParser.TempDirOption)) ?
7576
Path.GetTempPath() :
7677
parseResult.ValueForOption<string>(WorkloadInstallCommandParser.TempDirOption));
@@ -80,8 +81,8 @@ public WorkloadInstallCommand(
8081
_packageSourceLocation = string.IsNullOrEmpty(configOption) && (sourceOption == null || !sourceOption.Any()) ? null :
8182
new PackageSourceLocation(string.IsNullOrEmpty(configOption) ? null : new FilePath(configOption), sourceFeedOverrides: sourceOption);
8283

83-
_workloadManifestProvider = new SdkDirectoryWorkloadManifestProvider(_dotnetPath, _sdkVersion.ToString());
84-
_workloadResolver = workloadResolver ?? WorkloadResolver.Create(_workloadManifestProvider, _dotnetPath, _sdkVersion.ToString());
84+
_workloadManifestProvider = new SdkDirectoryWorkloadManifestProvider(_dotnetPath, _userHome, _sdkVersion.ToString());
85+
_workloadResolver = workloadResolver ?? WorkloadResolver.Create(_workloadManifestProvider, _dotnetPath, _userHome, _sdkVersion.ToString());
8586
var sdkFeatureBand = new SdkFeatureBand(_sdkVersion);
8687
var tempPackagesDir = new DirectoryPath(Path.Combine(_tempDirPath, "dotnet-sdk-advertising-temp"));
8788
var restoreActionConfig = _parseResult.ToRestoreActionConfig();
@@ -94,7 +95,6 @@ public WorkloadInstallCommand(
9495
WorkloadInstallerFactory.GetWorkloadInstaller(_reporter, sdkFeatureBand,
9596
_workloadResolver, _verbosity, _nugetPackageDownloader, _dotnetPath, _tempDirPath,
9697
_packageSourceLocation, restoreActionConfig, elevationRequired: !_printDownloadLinkOnly && string.IsNullOrWhiteSpace(_downloadToCacheOption));
97-
_userHome = userHome ?? CliFolderPathCalculator.DotnetHomePath;
9898
_workloadManifestUpdater = workloadManifestUpdater ?? new WorkloadManifestUpdater(_reporter, _workloadManifestProvider, _workloadResolver, _nugetPackageDownloader, _userHome, _tempDirPath, _packageSourceLocation);
9999

100100
ValidateWorkloadIdsInput();
@@ -316,7 +316,7 @@ private async Task UseTempManifestsToResolvePacksAsync(DirectoryPath tempPath, b
316316
}
317317
await _workloadManifestUpdater.ExtractManifestPackagesToTempDirAsync(manifestPackagePaths, tempPath);
318318
_workloadManifestProvider = new TempDirectoryWorkloadManifestProvider(tempPath.Value, _sdkVersion.ToString());
319-
_workloadResolver = _workloadResolver.CreateTempDirResolver(_workloadManifestProvider, _dotnetPath, _sdkVersion.ToString());
319+
_workloadResolver = _workloadResolver.CreateTempDirResolver(_workloadManifestProvider, _dotnetPath, _userHome, _sdkVersion.ToString());
320320
}
321321

322322
private async Task DownloadToOfflineCacheAsync(IEnumerable<WorkloadId> workloadIds, DirectoryPath offlineCache, bool skipManifestUpdate, bool includePreviews)
@@ -330,7 +330,7 @@ private async Task DownloadToOfflineCacheAsync(IEnumerable<WorkloadId> workloadI
330330
tempManifestDir = Path.Combine(offlineCache.Value, "temp-manifests");
331331
await _workloadManifestUpdater.ExtractManifestPackagesToTempDirAsync(manifestPackagePaths, new DirectoryPath(tempManifestDir));
332332
_workloadManifestProvider = new TempDirectoryWorkloadManifestProvider(tempManifestDir, _sdkVersion.ToString());
333-
_workloadResolver = _workloadResolver.CreateTempDirResolver(_workloadManifestProvider, _dotnetPath, _sdkVersion.ToString());
333+
_workloadResolver = _workloadResolver.CreateTempDirResolver(_workloadManifestProvider, _dotnetPath, _userHome, _sdkVersion.ToString());
334334
}
335335
else
336336
{

src/Cli/dotnet/commands/dotnet-workload/install/WorkloadOptionsExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ internal static ReleaseVersion GetValidatedSdkVersion(string versionOption, stri
2626
}
2727
else
2828
{
29-
var manifests = new SdkDirectoryWorkloadManifestProvider(dotnetPath, versionOption).GetManifests();
29+
var manifests = new SdkDirectoryWorkloadManifestProvider(dotnetPath, userHome: null /* TODO? */, versionOption).GetManifests();
3030
if (!manifests.Any())
3131
{
3232
throw new GracefulException(string.Format(LocalizableStrings.NoManifestsExistForFeatureBand, versionOption));

src/Cli/dotnet/commands/dotnet-workload/list/WorkloadListCommand.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,12 @@ public WorkloadListCommand(
6565
? Path.GetTempPath()
6666
: result.ValueForOption<string>(WorkloadListCommandParser.TempDirOption));
6767
_targetSdkVersion = result.ValueForOption<string>(WorkloadListCommandParser.VersionOption);
68+
_userHome = userHome ?? CliFolderPathCalculator.DotnetHomePath;
6869
_workloadManifestProvider =
69-
new SdkDirectoryWorkloadManifestProvider(_dotnetPath,
70+
new SdkDirectoryWorkloadManifestProvider(_dotnetPath, userHome,
7071
string.IsNullOrWhiteSpace(_targetSdkVersion)
7172
? currentSdkReleaseVersion.ToString()
7273
: _targetSdkVersion);
73-
_userHome = userHome ?? CliFolderPathCalculator.DotnetHomePath;
7474
DirectoryPath tempPackagesDir =
7575
new(Path.Combine(_userHome, ".dotnet", "sdk-advertising-temp"));
7676
NullLogger nullLogger = new NullLogger();

src/Cli/dotnet/commands/dotnet-workload/repair/WorkloadRepairCommand.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
using Microsoft.Extensions.EnvironmentAbstractions;
1616
using Microsoft.DotNet.Workloads.Workload.Install;
1717
using NuGet.Common;
18+
using Microsoft.DotNet.Configurer;
1819

1920
namespace Microsoft.DotNet.Workloads.Workload.Repair
2021
{
@@ -36,6 +37,7 @@ public WorkloadRepairCommand(
3637
IInstaller workloadInstaller = null,
3738
INuGetPackageDownloader nugetPackageDownloader = null,
3839
string dotnetDir = null,
40+
string userHome = null,
3941
string tempDirPath = null,
4042
string version = null)
4143
: base(parseResult)
@@ -44,14 +46,15 @@ public WorkloadRepairCommand(
4446
_verbosity = parseResult.ValueForOption<VerbosityOptions>(WorkloadRepairCommandParser.VerbosityOption);
4547
_dotnetPath = dotnetDir ?? Path.GetDirectoryName(Environment.ProcessPath);
4648
_sdkVersion = WorkloadOptionsExtensions.GetValidatedSdkVersion(parseResult.ValueForOption<string>(WorkloadRepairCommandParser.VersionOption), version, _dotnetPath);
49+
userHome ??= CliFolderPathCalculator.DotnetHomePath;
4750

4851
var configOption = parseResult.ValueForOption<string>(WorkloadRepairCommandParser.ConfigOption);
4952
var sourceOption = parseResult.ValueForOption<string[]>(WorkloadRepairCommandParser.SourceOption);
5053
_packageSourceLocation = string.IsNullOrEmpty(configOption) && (sourceOption == null || !sourceOption.Any()) ? null :
5154
new PackageSourceLocation(string.IsNullOrEmpty(configOption) ? null : new FilePath(configOption), sourceFeedOverrides: sourceOption);
5255

53-
_workloadManifestProvider = new SdkDirectoryWorkloadManifestProvider(_dotnetPath, _sdkVersion.ToString());
54-
_workloadResolver = workloadResolver ?? WorkloadResolver.Create(_workloadManifestProvider, _dotnetPath, _sdkVersion.ToString());
56+
_workloadManifestProvider = new SdkDirectoryWorkloadManifestProvider(_dotnetPath, userHome, _sdkVersion.ToString());
57+
_workloadResolver = workloadResolver ?? WorkloadResolver.Create(_workloadManifestProvider, _dotnetPath, userHome, _sdkVersion.ToString());
5558
var sdkFeatureBand = new SdkFeatureBand(_sdkVersion);
5659
tempDirPath = tempDirPath ?? (string.IsNullOrWhiteSpace(parseResult.ValueForOption<string>(WorkloadInstallCommandParser.TempDirOption)) ?
5760
Path.GetTempPath() :

src/Cli/dotnet/commands/dotnet-workload/search/WorkloadSearchCommand.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using Microsoft.NET.Sdk.WorkloadManifestReader;
1111
using System.Linq;
1212
using Microsoft.DotNet.Workloads.Workload.Install;
13+
using Microsoft.DotNet.Configurer;
1314

1415
namespace Microsoft.DotNet.Workloads.Workload.Search
1516
{
@@ -25,15 +26,17 @@ public WorkloadSearchCommand(
2526
ParseResult result,
2627
IReporter reporter = null,
2728
IWorkloadResolver workloadResolver = null,
29+
string userHome = null,
2830
string version = null) : base(result)
2931
{
3032
_reporter = reporter ?? Reporter.Output;
3133
_verbosity = result.ValueForOption<VerbosityOptions>(WorkloadSearchCommandParser.VerbosityOption);
3234
_workloadIdStub = result.ValueForArgument<string>(WorkloadSearchCommandParser.WorkloadIdStubArgument);
3335
var dotnetPath = Path.GetDirectoryName(Environment.ProcessPath);
3436
_sdkVersion = WorkloadOptionsExtensions.GetValidatedSdkVersion(result.ValueForOption<string>(WorkloadSearchCommandParser.VersionOption), version, dotnetPath);
35-
var workloadManifestProvider = new SdkDirectoryWorkloadManifestProvider(dotnetPath, _sdkVersion.ToString());
36-
_workloadResolver = workloadResolver ?? WorkloadResolver.Create(workloadManifestProvider, dotnetPath, _sdkVersion.ToString());
37+
userHome ??= CliFolderPathCalculator.DotnetHomePath;
38+
var workloadManifestProvider = new SdkDirectoryWorkloadManifestProvider(dotnetPath, userHome, _sdkVersion.ToString());
39+
_workloadResolver = workloadResolver ?? WorkloadResolver.Create(workloadManifestProvider, dotnetPath, userHome, _sdkVersion.ToString());
3740
}
3841

3942
public override int Execute()

src/Cli/dotnet/commands/dotnet-workload/uninstall/WorkloadUninstallCommand.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
using Microsoft.NET.Sdk.WorkloadManifestReader;
1717
using NuGet.Common;
1818
using Product = Microsoft.DotNet.Cli.Utils.Product;
19+
using Microsoft.DotNet.Configurer;
1920

2021
namespace Microsoft.DotNet.Workloads.Workload.Uninstall
2122
{
@@ -32,6 +33,7 @@ public WorkloadUninstallCommand(
3233
IWorkloadResolver workloadResolver = null,
3334
INuGetPackageDownloader nugetPackageDownloader = null,
3435
string dotnetDir = null,
36+
string userHome = null,
3537
string version = null)
3638
: base(parseResult)
3739
{
@@ -40,9 +42,10 @@ public WorkloadUninstallCommand(
4042
.Select(workloadId => new WorkloadId(workloadId)).ToList().AsReadOnly();
4143
var dotnetPath = dotnetDir ?? Path.GetDirectoryName(Environment.ProcessPath);
4244
_sdkVersion = WorkloadOptionsExtensions.GetValidatedSdkVersion(parseResult.ValueForOption<string>(WorkloadUninstallCommandParser.VersionOption), version, dotnetPath);
45+
userHome ??= CliFolderPathCalculator.DotnetHomePath;
4346
var verbosity = parseResult.ValueForOption<VerbosityOptions>(WorkloadUninstallCommandParser.VerbosityOption);
44-
var workloadManifestProvider = new SdkDirectoryWorkloadManifestProvider(dotnetPath, _sdkVersion.ToString());
45-
workloadResolver ??= WorkloadResolver.Create(workloadManifestProvider, dotnetPath, _sdkVersion.ToString());
47+
var workloadManifestProvider = new SdkDirectoryWorkloadManifestProvider(dotnetPath, userHome, _sdkVersion.ToString());
48+
workloadResolver ??= WorkloadResolver.Create(workloadManifestProvider, dotnetPath, userHome, _sdkVersion.ToString());
4649
nugetPackageDownloader ??= new NuGetPackageDownloader(new DirectoryPath(Path.GetTempPath()), filePermissionSetter: null, verboseLogger: new NullLogger());
4750
var sdkFeatureBand = new SdkFeatureBand(_sdkVersion);
4851
_workloadInstaller = WorkloadInstallerFactory.GetWorkloadInstaller(_reporter, sdkFeatureBand, workloadResolver, verbosity, nugetPackageDownloader, dotnetPath);

src/Cli/dotnet/commands/dotnet-workload/update/WorkloadUpdateCommand.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ public WorkloadUpdateCommand(
6969
_verbosity = parseResult.ValueForOption<VerbosityOptions>(WorkloadUpdateCommandParser.VerbosityOption);
7070
_dotnetPath = dotnetDir ?? Path.GetDirectoryName(Environment.ProcessPath);
7171
_sdkVersion = WorkloadOptionsExtensions.GetValidatedSdkVersion(parseResult.ValueForOption<string>(WorkloadUpdateCommandParser.VersionOption), version, _dotnetPath);
72+
_userHome = userHome ?? CliFolderPathCalculator.DotnetHomePath;
7273
_tempDirPath = tempDirPath ?? (string.IsNullOrWhiteSpace(parseResult.ValueForOption<string>(WorkloadUpdateCommandParser.TempDirOption)) ?
7374
Path.GetTempPath() :
7475
parseResult.ValueForOption<string>(WorkloadUpdateCommandParser.TempDirOption));
@@ -78,15 +79,14 @@ public WorkloadUpdateCommand(
7879
_packageSourceLocation = string.IsNullOrEmpty(configOption) && (sourceOption == null || !sourceOption.Any()) ? null :
7980
new PackageSourceLocation(string.IsNullOrEmpty(configOption) ? null : new FilePath(configOption), sourceFeedOverrides: sourceOption);
8081

81-
_workloadManifestProvider = new SdkDirectoryWorkloadManifestProvider(_dotnetPath, _sdkVersion.ToString());
82-
_workloadResolver = workloadResolver ?? WorkloadResolver.Create(_workloadManifestProvider, _dotnetPath, _sdkVersion.ToString());
82+
_workloadManifestProvider = new SdkDirectoryWorkloadManifestProvider(_dotnetPath, _userHome, _sdkVersion.ToString());
83+
_workloadResolver = workloadResolver ?? WorkloadResolver.Create(_workloadManifestProvider, _dotnetPath, _userHome, _sdkVersion.ToString());
8384
var sdkFeatureBand = new SdkFeatureBand(_sdkVersion);
8485
var restoreActionConfig = _parseResult.ToRestoreActionConfig();
8586
_workloadInstaller = workloadInstaller ?? WorkloadInstallerFactory.GetWorkloadInstaller(_reporter,
8687
sdkFeatureBand, _workloadResolver, _verbosity, nugetPackageDownloader,
8788
dotnetDir, _tempDirPath, packageSourceLocation: _packageSourceLocation, restoreActionConfig,
8889
elevationRequired: !_printDownloadLinkOnly && string.IsNullOrWhiteSpace(_downloadToCacheOption));
89-
_userHome = userHome ?? CliFolderPathCalculator.DotnetHomePath;
9090
var tempPackagesDir = new DirectoryPath(Path.Combine(_tempDirPath, "dotnet-sdk-advertising-temp"));
9191
_nugetPackageDownloader = nugetPackageDownloader ?? new NuGetPackageDownloader(tempPackagesDir,
9292
filePermissionSetter: null, new FirstPartyNuGetPackageSigningVerifier(tempPackagesDir),
@@ -228,7 +228,7 @@ private async Task DownloadToOfflineCacheAsync(DirectoryPath offlineCache, bool
228228
{
229229
await _workloadManifestUpdater.ExtractManifestPackagesToTempDirAsync(manifestPackagePaths, new DirectoryPath(tempManifestDir));
230230
_workloadManifestProvider = new TempDirectoryWorkloadManifestProvider(tempManifestDir, _sdkVersion.ToString());
231-
_workloadResolver = WorkloadResolver.Create(_workloadManifestProvider, _dotnetPath, _sdkVersion.ToString());
231+
_workloadResolver = WorkloadResolver.Create(_workloadManifestProvider, _dotnetPath, _userHome, _sdkVersion.ToString());
232232

233233
if (_workloadInstaller.GetInstallationUnit().Equals(InstallationUnit.Packs))
234234
{
@@ -293,7 +293,7 @@ private async Task UseTempManifestsToResolvePacksAsync(DirectoryPath tempPath, b
293293
var manifestPackagePaths = await _workloadManifestUpdater.DownloadManifestPackagesAsync(includePreview, tempPath);
294294
await _workloadManifestUpdater.ExtractManifestPackagesToTempDirAsync(manifestPackagePaths, tempPath);
295295
_workloadManifestProvider = new TempDirectoryWorkloadManifestProvider(tempPath.Value, _sdkVersion.ToString());
296-
_workloadResolver = WorkloadResolver.Create(_workloadManifestProvider, _dotnetPath, _sdkVersion.ToString());
296+
_workloadResolver = WorkloadResolver.Create(_workloadManifestProvider, _dotnetPath, _userHome, _sdkVersion.ToString());
297297
}
298298

299299
private IEnumerable<WorkloadId> GetUpdatableWorkloads()

src/Microsoft.DotNet.TemplateLocator/TemplateLocator.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ public TemplateLocator(Func<string, string> getEnvironmentVariable, VSSettings v
4040

4141
public IReadOnlyCollection<IOptionalSdkTemplatePackageInfo> GetDotnetSdkTemplatePackages(
4242
string sdkVersion,
43-
string dotnetRootPath)
43+
string dotnetRootPath,
44+
string userHome)
4445
{
4546
if (string.IsNullOrWhiteSpace(sdkVersion))
4647
{
@@ -53,8 +54,8 @@ public IReadOnlyCollection<IOptionalSdkTemplatePackageInfo> GetDotnetSdkTemplate
5354
nameof(dotnetRootPath));
5455
}
5556

56-
_workloadManifestProvider ??= new SdkDirectoryWorkloadManifestProvider(dotnetRootPath, sdkVersion);
57-
_workloadResolver ??= WorkloadResolver.Create(_workloadManifestProvider, dotnetRootPath, sdkVersion);
57+
_workloadManifestProvider ??= new SdkDirectoryWorkloadManifestProvider(dotnetRootPath, userHome, sdkVersion);
58+
_workloadResolver ??= WorkloadResolver.Create(_workloadManifestProvider, dotnetRootPath, userHome, sdkVersion);
5859

5960
return _workloadResolver.GetInstalledWorkloadPacksOfKind(WorkloadPackKind.Template)
6061
.Select(pack => new OptionalSdkTemplatePackageInfo(pack.Id, pack.Version, pack.Path)).ToList();

0 commit comments

Comments
 (0)