| File: PackageRestoreConsent.cs | Web Access |
| Project: src\nuget-client\src\NuGet.Core\NuGet.PackageManagement\NuGet.PackageManagement.csproj (NuGet.PackageManagement) |
// 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.Globalization; using NuGet.Common; using NuGet.Configuration; namespace NuGet.PackageManagement { public class PackageRestoreConsent { private const string EnvironmentVariableName = "EnableNuGetPackageRestore"; private const string PackageRestoreSection = "packageRestore"; private const string PackageRestoreConsentKey = "enabled"; // the key to enable/disable automatic package restore during build. private const string PackageRestoreAutomaticKey = "automatic"; private readonly Configuration.ISettings _settings; private readonly Common.IEnvironmentVariableReader _environmentReader; private readonly ConfigurationDefaults _configurationDefaults; public PackageRestoreConsent(Configuration.ISettings settings) : this(settings, EnvironmentVariableWrapper.Instance) { } public PackageRestoreConsent(Configuration.ISettings settings, Common.IEnvironmentVariableReader environmentReader) : this(settings, environmentReader, ConfigurationDefaults.Instance) { } public PackageRestoreConsent(Configuration.ISettings settings, Common.IEnvironmentVariableReader environmentReader, ConfigurationDefaults configurationDefaults) { _settings = settings ?? throw new ArgumentNullException(nameof(settings)); _environmentReader = environmentReader ?? throw new ArgumentNullException(nameof(environmentReader)); _configurationDefaults = configurationDefaults ?? throw new ArgumentNullException(nameof(configurationDefaults)); } public bool IsGranted { get { var envValue = _environmentReader.GetEnvironmentVariable(EnvironmentVariableName); return IsGrantedInSettings || IsSet(envValue, false); } } public bool IsGrantedInSettings { get { var settingsValue = SettingsUtility.GetValueForAddItem(_settings, PackageRestoreSection, PackageRestoreConsentKey); if (string.IsNullOrWhiteSpace(settingsValue)) { settingsValue = _configurationDefaults.DefaultPackageRestoreConsent ?? string.Empty; } return IsSet(settingsValue, true); } set { _settings.AddOrUpdate(PackageRestoreSection, new AddItem(PackageRestoreConsentKey, value.ToString(CultureInfo.InvariantCulture))); _settings.SaveToDisk(); } } public bool IsAutomatic { get { var settingsValue = SettingsUtility.GetValueForAddItem(_settings, PackageRestoreSection, PackageRestoreAutomaticKey); return IsSet(settingsValue, IsGrantedInSettings); } set { _settings.AddOrUpdate(PackageRestoreSection, new AddItem(PackageRestoreAutomaticKey, value.ToString(CultureInfo.InvariantCulture))); _settings.SaveToDisk(); } } private static bool IsSet(string value, bool defaultValue) { if (string.IsNullOrWhiteSpace(value)) { return defaultValue; } value = value.Trim(); bool boolResult; int intResult; var result = ((bool.TryParse(value, out boolResult) && boolResult) || (int.TryParse(value, NumberStyles.Number, CultureInfo.InvariantCulture, out intResult) && (intResult == 1))); return result; } } }