private static SettingsFile LoadUserSpecificSettings( string root, string configFileName, bool useTestingGlobalPath) { // Path.Combine is performed with root so it should not be null // However, it is legal for it be empty in this method var rootDirectory = root ?? string.Empty; // for the default location, allow case where file does not exist, in which case it'll end // up being created if needed SettingsFile userSpecificSettings = null; if (configFileName == null) { var defaultSettingsFilePath = string.Empty; if (useTestingGlobalPath) { defaultSettingsFilePath = Path.Combine(rootDirectory, "TestingGlobalPath", DefaultSettingsFileName); } else { var userSettingsDir = NuGetEnvironment.GetFolderPath(NuGetFolderPath.UserSettingsDirectory); // If there is no user settings directory, return no settings if (userSettingsDir == null) { return(null); } defaultSettingsFilePath = Path.Combine(userSettingsDir, DefaultSettingsFileName); } userSpecificSettings = ReadSettings(rootDirectory, defaultSettingsFilePath); if (File.Exists(defaultSettingsFilePath) && userSpecificSettings.IsEmpty()) { var trackFilePath = Path.Combine(Path.GetDirectoryName(defaultSettingsFilePath), NuGetConstants.AddV3TrackFile); if (!File.Exists(trackFilePath)) { File.Create(trackFilePath).Dispose(); var defaultSource = new SourceItem(NuGetConstants.FeedName, NuGetConstants.V3FeedUrl, protocolVersion: "3"); userSpecificSettings.AddOrUpdate(ConfigurationConstants.PackageSources, defaultSource); userSpecificSettings.SaveToDisk(); } } } else { if (!FileSystemUtility.DoesFileExistIn(rootDirectory, configFileName)) { var message = string.Format(CultureInfo.CurrentCulture, Resources.FileDoesNotExist, Path.Combine(rootDirectory, configFileName)); throw new InvalidOperationException(message); } userSpecificSettings = ReadSettings(rootDirectory, configFileName); } return(userSpecificSettings); }
private void Save() { ExecuteSynchronized(() => FileSystemUtility.AddFile(ConfigFilePath, ConfigXDocument.Save)); }
private static void LoadUserSpecificSettings( List <Settings> validSettingFiles, string root, string configFileName, IMachineWideSettings machineWideSettings, bool useTestingGlobalPath ) { if (root == null) { // Path.Combine is performed with root so it should not be null // However, it is legal for it be empty in this method root = string.Empty; } // for the default location, allow case where file does not exist, in which case it'll end // up being created if needed Settings appDataSettings = null; if (configFileName == null) { var defaultSettingsFilePath = string.Empty; if (useTestingGlobalPath) { defaultSettingsFilePath = Path.Combine(root, "TestingGlobalPath", DefaultSettingsFileName); } else { var userSettingsDir = NuGetEnvironment.GetFolderPath(NuGetFolderPath.UserSettingsDirectory); // If there is no user settings directory, return no appdata settings if (userSettingsDir == null) { return; } defaultSettingsFilePath = Path.Combine(userSettingsDir, DefaultSettingsFileName); } if (!File.Exists(defaultSettingsFilePath) && machineWideSettings != null) { // Since defaultSettingsFilePath is a full path, so it doesn't matter what value is // used as root for the PhysicalFileSystem. appDataSettings = ReadSettings( root, defaultSettingsFilePath); // Disable machinewide sources to improve perf var disabledSources = new List <SettingValue>(); foreach (var setting in machineWideSettings.Settings) { var values = setting.GetSettingValues(ConfigurationConstants.PackageSources, isPath: true); foreach (var value in values) { var packageSource = new PackageSource(value.Value); // if the machine wide package source is http source, disable it by default if (packageSource.IsHttp) { disabledSources.Add(new SettingValue(value.Key, "true", origin: setting, isMachineWide: true, priority: 0)); } } } appDataSettings.UpdateSections(ConfigurationConstants.DisabledPackageSources, disabledSources); } else { appDataSettings = ReadSettings(root, defaultSettingsFilePath); var IsEmptyConfig = !appDataSettings.GetSettingValues(ConfigurationConstants.PackageSources).Any(); if (IsEmptyConfig) { var trackFilePath = Path.Combine(Path.GetDirectoryName(defaultSettingsFilePath), NuGetConstants.AddV3TrackFile); if (!File.Exists(trackFilePath)) { File.Create(trackFilePath).Dispose(); var defaultPackageSource = new SettingValue(NuGetConstants.FeedName, NuGetConstants.V3FeedUrl, isMachineWide: false); defaultPackageSource.AdditionalData.Add(ConfigurationConstants.ProtocolVersionAttribute, "3"); appDataSettings.UpdateSections(ConfigurationConstants.PackageSources, new List <SettingValue> { defaultPackageSource }); } } } } else { if (!FileSystemUtility.DoesFileExistIn(root, configFileName)) { var message = string.Format(CultureInfo.CurrentCulture, Resources.FileDoesNotExist, Path.Combine(root, configFileName)); throw new InvalidOperationException(message); } appDataSettings = ReadSettings(root, configFileName); } if (appDataSettings != null) { validSettingFiles.Add(appDataSettings); } }
private static XDocument CreateDocument(XDocument content, string fullPath) { // Add it to the file system FileSystemUtility.AddFile(fullPath, content.Save); return(content); }