private WorkloadResolver(IWorkloadManifestProvider manifestProvider, string [] dotnetRootPaths, string [] currentRuntimeIdentifiers) { _dotnetRootPaths = dotnetRootPaths; _currentRuntimeIdentifiers = currentRuntimeIdentifiers; var manifests = new List <WorkloadManifest>(); foreach (var manifestStream in manifestProvider.GetManifests()) { using (manifestStream) { var manifest = WorkloadManifestReader.ReadWorkloadManifest(manifestStream); manifests.Add(manifest); } } foreach (var manifest in manifests) { foreach (var workload in manifest.Workloads) { _workloads.Add(workload.Key, workload.Value); } foreach (var pack in manifest.Packs) { _packs.Add(pack.Key, pack.Value); } } }
public WorkloadUpdateCommand( ParseResult parseResult, IReporter reporter = null, IWorkloadResolver workloadResolver = null, IInstaller workloadInstaller = null, INuGetPackageDownloader nugetPackageDownloader = null, IWorkloadManifestUpdater workloadManifestUpdater = null, string dotnetDir = null, string userHome = null, string version = null) : base(parseResult) { _printDownloadLinkOnly = parseResult.ValueForOption <bool>(WorkloadInstallCommandParser.PrintDownloadLinkOnlyOption); _fromCacheOption = parseResult.ValueForOption <string>(WorkloadInstallCommandParser.FromCacheOption); _reporter = reporter ?? Reporter.Output; _includePreviews = parseResult.ValueForOption <bool>(WorkloadUpdateCommandParser.IncludePreviewsOption); _verbosity = parseResult.ValueForOption <VerbosityOptions>(WorkloadUpdateCommandParser.VerbosityOption); _sdkVersion = new ReleaseVersion(version ?? (string.IsNullOrWhiteSpace(parseResult.ValueForOption <string>(WorkloadUpdateCommandParser.SdkVersionOption)) ? Product.Version : parseResult.ValueForOption <string>(WorkloadUpdateCommandParser.SdkVersionOption))); var dotnetPath = dotnetDir ?? Path.GetDirectoryName(Environment.ProcessPath); _workloadManifestProvider = new SdkDirectoryWorkloadManifestProvider(dotnetPath, _sdkVersion.ToString()); _workloadResolver = workloadResolver ?? WorkloadResolver.Create(_workloadManifestProvider, dotnetPath, _sdkVersion.ToString()); var sdkFeatureBand = new SdkFeatureBand(_sdkVersion); _workloadInstaller = workloadInstaller ?? WorkloadInstallerFactory.GetWorkloadInstaller(_reporter, sdkFeatureBand, _workloadResolver, _verbosity, nugetPackageDownloader, dotnetDir); userHome = userHome ?? CliFolderPathCalculator.DotnetHomePath; var tempPackagesDir = new DirectoryPath(Path.Combine(userHome, ".dotnet", "sdk-advertising-temp")); _nugetPackageDownloader = nugetPackageDownloader ?? new NuGetPackageDownloader(tempPackagesDir, filePermissionSetter: null, new NullLogger()); _workloadManifestUpdater = workloadManifestUpdater ?? new WorkloadManifestUpdater(_reporter, _workloadManifestProvider, _nugetPackageDownloader, userHome); }
public static WorkloadResolver CreateForTests(IWorkloadManifestProvider manifestProvider, string[] dotNetRootPaths, string[]?currentRuntimeIdentifiers = null) { if (currentRuntimeIdentifiers == null) { currentRuntimeIdentifiers = new[] { "win-x64", "win", "any", "base" }; } return(new WorkloadResolver(manifestProvider, dotNetRootPaths, currentRuntimeIdentifiers)); }
private WorkloadResolver(IWorkloadManifestProvider manifestProvider, string [] dotnetRootPaths, string [] currentRuntimeIdentifiers) { _dotnetRootPaths = dotnetRootPaths; _currentRuntimeIdentifiers = currentRuntimeIdentifiers; _manifestProvider = manifestProvider; RefreshWorkloadManifests(); }
public static WorkloadResolver Create(IWorkloadManifestProvider manifestProvider, string dotnetRootPath, string sdkVersion) { string runtimeIdentifierChainPath = Path.Combine(dotnetRootPath, "sdk", sdkVersion, "NETCoreSdkRuntimeIdentifierChain.txt"); string[] currentRuntimeIdentifiers = File.Exists(runtimeIdentifierChainPath) ? File.ReadAllLines(runtimeIdentifierChainPath).Where(l => !string.IsNullOrEmpty(l)).ToArray() : new string[] { }; return(new WorkloadResolver(manifestProvider, dotnetRootPath, currentRuntimeIdentifiers)); }
public WorkloadManifestUpdater( IReporter reporter, IWorkloadManifestProvider workloadManifestProvider, INuGetPackageDownloader nugetPackageDownloader, string userHome) { _reporter = reporter; _workloadManifestProvider = workloadManifestProvider; _userHome = userHome; _nugetPackageDownloader = nugetPackageDownloader; _sdkFeatureBand = new SdkFeatureBand(_workloadManifestProvider.GetSdkFeatureBand()); }
public WorkloadUpdateCommand( ParseResult parseResult, IReporter reporter = null, IWorkloadResolver workloadResolver = null, IInstaller workloadInstaller = null, INuGetPackageDownloader nugetPackageDownloader = null, IWorkloadManifestUpdater workloadManifestUpdater = null, string dotnetDir = null, string userHome = null, string tempDirPath = null, string version = null) : base(parseResult) { _printDownloadLinkOnly = parseResult.ValueForOption <bool>(WorkloadUpdateCommandParser.PrintDownloadLinkOnlyOption); _fromCacheOption = parseResult.ValueForOption <string>(WorkloadUpdateCommandParser.FromCacheOption); _reporter = reporter ?? Reporter.Output; _includePreviews = parseResult.ValueForOption <bool>(WorkloadUpdateCommandParser.IncludePreviewsOption); _fromPreviousSdk = parseResult.ValueForOption <bool>(WorkloadUpdateCommandParser.FromPreviousSdkOption); _adManifestOnlyOption = parseResult.ValueForOption <bool>(WorkloadUpdateCommandParser.AdManifestOnlyOption); _downloadToCacheOption = parseResult.ValueForOption <string>(WorkloadUpdateCommandParser.DownloadToCacheOption); _verbosity = parseResult.ValueForOption <VerbosityOptions>(WorkloadUpdateCommandParser.VerbosityOption); _dotnetPath = dotnetDir ?? Path.GetDirectoryName(Environment.ProcessPath); _sdkVersion = WorkloadOptionsExtensions.GetValidatedSdkVersion(parseResult.ValueForOption <string>(WorkloadUpdateCommandParser.VersionOption), version, _dotnetPath); _tempDirPath = tempDirPath ?? (string.IsNullOrWhiteSpace(parseResult.ValueForOption <string>(WorkloadUpdateCommandParser.TempDirOption)) ? Path.GetTempPath() : parseResult.ValueForOption <string>(WorkloadUpdateCommandParser.TempDirOption)); _printRollbackDefinitionOnly = parseResult.ValueForOption <bool>(WorkloadUpdateCommandParser.PrintRollbackOption); _fromRollbackDefinition = parseResult.ValueForOption <string>(WorkloadUpdateCommandParser.FromRollbackFileOption); var configOption = parseResult.ValueForOption <string>(WorkloadUpdateCommandParser.ConfigOption); var sourceOption = parseResult.ValueForOption <string[]>(WorkloadUpdateCommandParser.SourceOption); _packageSourceLocation = string.IsNullOrEmpty(configOption) && (sourceOption == null || !sourceOption.Any()) ? null : new PackageSourceLocation(string.IsNullOrEmpty(configOption) ? null : new FilePath(configOption), sourceFeedOverrides: sourceOption); _workloadManifestProvider = new SdkDirectoryWorkloadManifestProvider(_dotnetPath, _sdkVersion.ToString()); _workloadResolver = workloadResolver ?? WorkloadResolver.Create(_workloadManifestProvider, _dotnetPath, _sdkVersion.ToString()); var sdkFeatureBand = new SdkFeatureBand(_sdkVersion); var restoreActionConfig = _parseResult.ToRestoreActionConfig(); _workloadInstaller = workloadInstaller ?? WorkloadInstallerFactory.GetWorkloadInstaller(_reporter, sdkFeatureBand, _workloadResolver, _verbosity, nugetPackageDownloader, dotnetDir, _tempDirPath, packageSourceLocation: _packageSourceLocation, restoreActionConfig, elevationRequired: !_printDownloadLinkOnly && string.IsNullOrWhiteSpace(_downloadToCacheOption)); _userHome = userHome ?? CliFolderPathCalculator.DotnetHomePath; var tempPackagesDir = new DirectoryPath(Path.Combine(_tempDirPath, "dotnet-sdk-advertising-temp")); _nugetPackageDownloader = nugetPackageDownloader ?? new NuGetPackageDownloader(tempPackagesDir, filePermissionSetter: null, new FirstPartyNuGetPackageSigningVerifier(tempPackagesDir), new NullLogger(), restoreActionConfig: restoreActionConfig); _workloadManifestUpdater = workloadManifestUpdater ?? new WorkloadManifestUpdater(_reporter, _workloadManifestProvider, _workloadResolver, _nugetPackageDownloader, _userHome, _tempDirPath, _packageSourceLocation); }
public WorkloadManifestUpdater( IReporter reporter, IWorkloadManifestProvider workloadManifestProvider, INuGetPackageDownloader nugetPackageDownloader, string userHome, string tempDirPath, PackageSourceLocation packageSourceLocation = null) { _reporter = reporter; _workloadManifestProvider = workloadManifestProvider; _userHome = userHome; _tempDirPath = tempDirPath; _nugetPackageDownloader = nugetPackageDownloader; _sdkFeatureBand = new SdkFeatureBand(_workloadManifestProvider.GetSdkFeatureBand()); _packageSourceLocation = packageSourceLocation; }
public WorkloadResolver CreateTempDirResolver(IWorkloadManifestProvider manifestProvider, string dotnetRootPath, string sdkVersion) { var packRootEnvironmentVariable = Environment.GetEnvironmentVariable("DOTNETSDK_WORKLOAD_PACK_ROOTS"); string[] dotnetRootPaths; if (!string.IsNullOrEmpty(packRootEnvironmentVariable)) { dotnetRootPaths = packRootEnvironmentVariable.Split(Path.DirectorySeparatorChar).Append(dotnetRootPath).ToArray(); } else { dotnetRootPaths = new[] { dotnetRootPath }; } return(new WorkloadResolver(manifestProvider, dotnetRootPaths, _currentRuntimeIdentifiers)); }
public WorkloadInstallCommand( ParseResult parseResult, IReporter reporter = null, IWorkloadResolver workloadResolver = null, IInstaller workloadInstaller = null, INuGetPackageDownloader nugetPackageDownloader = null, IWorkloadManifestUpdater workloadManifestUpdater = null, string dotnetDir = null, string userHome = null, string tempDirPath = null, string version = null) : base(parseResult) { _reporter = reporter ?? Reporter.Output; _skipManifestUpdate = parseResult.ValueForOption <bool>(WorkloadInstallCommandParser.SkipManifestUpdateOption); _includePreviews = parseResult.ValueForOption <bool>(WorkloadInstallCommandParser.IncludePreviewOption); _printDownloadLinkOnly = parseResult.ValueForOption <bool>(WorkloadInstallCommandParser.PrintDownloadLinkOnlyOption); _fromCacheOption = parseResult.ValueForOption <string>(WorkloadInstallCommandParser.FromCacheOption); _downloadToCacheOption = parseResult.ValueForOption <string>(WorkloadInstallCommandParser.DownloadToCacheOption); _workloadIds = parseResult.ValueForArgument <IEnumerable <string> >(WorkloadInstallCommandParser.WorkloadIdArgument).ToList().AsReadOnly(); _verbosity = parseResult.ValueForOption <VerbosityOptions>(WorkloadInstallCommandParser.VerbosityOption); _sdkVersion = string.IsNullOrEmpty(parseResult.ValueForOption <string>(WorkloadInstallCommandParser.VersionOption)) ? new ReleaseVersion(version ?? Product.Version) : new ReleaseVersion(parseResult.ValueForOption <string>(WorkloadInstallCommandParser.VersionOption)); _tempDirPath = tempDirPath ?? (string.IsNullOrWhiteSpace(parseResult.ValueForOption <string>(WorkloadInstallCommandParser.TempDirOption)) ? Path.GetTempPath() : parseResult.ValueForOption <string>(WorkloadInstallCommandParser.TempDirOption)); var configOption = parseResult.ValueForOption <string>(WorkloadInstallCommandParser.ConfigOption); var addSourceOption = parseResult.ValueForOption <string[]>(WorkloadInstallCommandParser.AddSourceOption); _packageSourceLocation = string.IsNullOrEmpty(configOption) && (addSourceOption == null || !addSourceOption.Any()) ? null : new PackageSourceLocation(string.IsNullOrEmpty(configOption) ? null : new FilePath(configOption), sourceFeedOverrides: addSourceOption); _dotnetPath = dotnetDir ?? Path.GetDirectoryName(Environment.ProcessPath); _workloadManifestProvider = new SdkDirectoryWorkloadManifestProvider(_dotnetPath, _sdkVersion.ToString()); _workloadResolver = workloadResolver ?? WorkloadResolver.Create(_workloadManifestProvider, _dotnetPath, _sdkVersion.ToString()); var sdkFeatureBand = new SdkFeatureBand(_sdkVersion); _workloadInstaller = workloadInstaller ?? WorkloadInstallerFactory.GetWorkloadInstaller(_reporter, sdkFeatureBand, _workloadResolver, _verbosity, nugetPackageDownloader, _dotnetPath, _packageSourceLocation); _userHome = userHome ?? CliFolderPathCalculator.DotnetHomePath; var tempPackagesDir = new DirectoryPath(Path.Combine(_tempDirPath, "dotnet-sdk-advertising-temp")); _nugetPackageDownloader = nugetPackageDownloader ?? new NuGetPackageDownloader(tempPackagesDir, filePermissionSetter: null, new NullLogger()); _workloadManifestUpdater = workloadManifestUpdater ?? new WorkloadManifestUpdater(_reporter, _workloadManifestProvider, _nugetPackageDownloader, _userHome, _tempDirPath, _packageSourceLocation); }
public WorkloadManifestUpdater(IReporter reporter, IWorkloadManifestProvider workloadManifestProvider, IWorkloadResolver workloadResolver, INuGetPackageDownloader nugetPackageDownloader, string userHome, string tempDirPath, PackageSourceLocation packageSourceLocation = null, Func <string, string> getEnvironmentVariable = null) { _reporter = reporter; _workloadManifestProvider = workloadManifestProvider; _workloadResolver = workloadResolver; _userHome = userHome; _tempDirPath = tempDirPath; _nugetPackageDownloader = nugetPackageDownloader; _sdkFeatureBand = new SdkFeatureBand(_workloadManifestProvider.GetSdkFeatureBand()); _packageSourceLocation = packageSourceLocation; _getEnvironmentVariable = getEnvironmentVariable ?? Environment.GetEnvironmentVariable; }
public WorkloadRepairCommand( ParseResult parseResult, IReporter reporter = null, IWorkloadResolver workloadResolver = null, IInstaller workloadInstaller = null, INuGetPackageDownloader nugetPackageDownloader = null, string dotnetDir = null, string tempDirPath = null, string version = null) : base(parseResult) { _reporter = reporter ?? Reporter.Output; _verbosity = parseResult.ValueForOption <VerbosityOptions>(WorkloadRepairCommandParser.VerbosityOption); _dotnetPath = dotnetDir ?? Path.GetDirectoryName(Environment.ProcessPath); _sdkVersion = WorkloadOptionsExtensions.GetValidatedSdkVersion(parseResult.ValueForOption <string>(WorkloadRepairCommandParser.VersionOption), version, _dotnetPath); var configOption = parseResult.ValueForOption <string>(WorkloadRepairCommandParser.ConfigOption); var sourceOption = parseResult.ValueForOption <string[]>(WorkloadRepairCommandParser.SourceOption); _packageSourceLocation = string.IsNullOrEmpty(configOption) && (sourceOption == null || !sourceOption.Any()) ? null : new PackageSourceLocation(string.IsNullOrEmpty(configOption) ? null : new FilePath(configOption), sourceFeedOverrides: sourceOption); _workloadManifestProvider = new SdkDirectoryWorkloadManifestProvider(_dotnetPath, _sdkVersion.ToString()); _workloadResolver = workloadResolver ?? WorkloadResolver.Create(_workloadManifestProvider, _dotnetPath, _sdkVersion.ToString()); var sdkFeatureBand = new SdkFeatureBand(_sdkVersion); tempDirPath = tempDirPath ?? (string.IsNullOrWhiteSpace(parseResult.ValueForOption <string>(WorkloadInstallCommandParser.TempDirOption)) ? Path.GetTempPath() : parseResult.ValueForOption <string>(WorkloadInstallCommandParser.TempDirOption)); var tempPackagesDir = new DirectoryPath(Path.Combine(tempDirPath, "dotnet-sdk-advertising-temp")); NullLogger nullLogger = new NullLogger(); nugetPackageDownloader ??= new NuGetPackageDownloader( tempPackagesDir, filePermissionSetter: null, new FirstPartyNuGetPackageSigningVerifier(tempPackagesDir, nullLogger), nullLogger, restoreActionConfig: _parseResult.ToRestoreActionConfig()); _workloadInstaller = workloadInstaller ?? WorkloadInstallerFactory.GetWorkloadInstaller(_reporter, sdkFeatureBand, _workloadResolver, _verbosity, nugetPackageDownloader, dotnetDir, tempDirPath, _packageSourceLocation, _parseResult.ToRestoreActionConfig()); }
public WorkloadResolver(IWorkloadManifestProvider manifestProvider, string dotNetRootPath) { this._dotNetRootPath = dotNetRootPath; // eventually we may want a series of fallbacks here, as rids have in general // but for now, keep it simple var platformId = GetHostPlatformId(); if (platformId != null) { _platformIds = new[] { platformId, "*" }; } else { _platformIds = new[] { "*" }; } var manifests = new List <WorkloadManifest>(); foreach (var manifestStream in manifestProvider.GetManifests()) { using (manifestStream) { var manifest = WorkloadManifestReader.ReadWorkloadManifest(manifestStream); manifests.Add(manifest); } } foreach (var manifest in manifests) { foreach (var workload in manifest.Workloads) { _workloads.Add(workload.Key, workload.Value); } foreach (var pack in manifest.Packs) { _packs.Add(pack.Key, pack.Value); } } }
public static WorkloadResolver Create(IWorkloadManifestProvider manifestProvider, string dotnetRootPath, string sdkVersion) { string runtimeIdentifierChainPath = Path.Combine(dotnetRootPath, "sdk", sdkVersion, "NETCoreSdkRuntimeIdentifierChain.txt"); string[] currentRuntimeIdentifiers = File.Exists(runtimeIdentifierChainPath) ? File.ReadAllLines(runtimeIdentifierChainPath).Where(l => !string.IsNullOrEmpty(l)).ToArray() : new string[] { }; var packRootEnvironmentVariable = Environment.GetEnvironmentVariable("DOTNETSDK_WORKLOAD_PACK_ROOTS"); string[] dotnetRootPaths; if (!string.IsNullOrEmpty(packRootEnvironmentVariable)) { dotnetRootPaths = packRootEnvironmentVariable.Split(Path.DirectorySeparatorChar).Append(dotnetRootPath).ToArray(); } else { dotnetRootPaths = new[] { dotnetRootPath }; } return(new WorkloadResolver(manifestProvider, dotnetRootPaths, currentRuntimeIdentifiers)); }
public static WorkloadResolver CreateForTests(IWorkloadManifestProvider manifestProvider, string dotnetRootPath, string[] currentRuntimeIdentifiers) { return(new WorkloadResolver(manifestProvider, dotnetRootPath, currentRuntimeIdentifiers)); }
WorkloadResolver IWorkloadResolver.CreateOverlayResolver(IWorkloadManifestProvider overlayManifestProvider) => throw new NotImplementedException();
public WorkloadResolver CreateTempDirResolver(IWorkloadManifestProvider manifestProvider, string dotnetRootPath, string sdkVersion) => throw new NotImplementedException();