| File: RestoreSettingsUtils.cs | Web Access |
| Project: src\nuget-client\src\NuGet.Core\NuGet.Build.Tasks\NuGet.Build.Tasks.csproj (NuGet.Build.Tasks) |
// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. #nullable disable using System; using System.Collections.Generic; using System.IO; using NuGet.Configuration; namespace NuGet.Build.Tasks { /// <summary> /// This class contains the logic for the settings using during restore. /// It contains methods with the settings precedence logic as well. /// </summary> public static class RestoreSettingsUtils { public static readonly string Clear = nameof(Clear); public static ISettings ReadSettings(string solutionDirectory, string restoreDirectory, string restoreConfigFile, Lazy<IMachineWideSettings> machineWideSettings) { return ReadSettings(solutionDirectory, restoreDirectory, restoreConfigFile, machineWideSettings, settingsLoadContext: null); } public static ISettings ReadSettings(string solutionDirectory, string restoreDirectory, string restoreConfigFile, Lazy<IMachineWideSettings> machineWideSettings, SettingsLoadingContext settingsLoadContext) { if (!string.IsNullOrEmpty(solutionDirectory)) { // Read the solution-level settings var solutionSettingsFile = Path.Combine( solutionDirectory, NuGetConstants.NuGetSolutionSettingsFolder); if (restoreConfigFile != null) { restoreConfigFile = Path.GetFullPath(restoreConfigFile); } return Configuration.Settings.LoadDefaultSettings( solutionSettingsFile, configFileName: restoreConfigFile, machineWideSettings: machineWideSettings.Value, settingsLoadingContext: settingsLoadContext); } if (string.IsNullOrEmpty(restoreConfigFile)) { return Configuration.Settings.LoadDefaultSettings( restoreDirectory, configFileName: null, machineWideSettings: machineWideSettings.Value, settingsLoadingContext: settingsLoadContext); } else { var configFileFullPath = Path.GetFullPath(restoreConfigFile); var directory = Path.GetDirectoryName(configFileFullPath); var configFileName = Path.GetFileName(configFileFullPath); return Configuration.Settings.LoadDefaultSettings( directory, configFileName, machineWideSettings: null, settingsLoadContext); } } /// <summary> /// Return the value from the first function that returns non-null. /// </summary> public static T GetValue<T>(params Func<T>[] funcs) { var result = default(T); // Run until a value is returned from a function. for (var i = 0; EqualityComparer<T>.Default.Equals(result, default(T)) && i < funcs.Length; i++) { result = funcs[i](); } return result; } } }