Browse Source

Use NuGet's PackageSourceProvider.

Move logic out of SharpDevelop and use NuGet's PackageSourceProvider
to read and update NuGet package sources in NuGet.Config.
pull/622/head
Matt Ward 11 years ago
parent
commit
6b03044477
  1. 6
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSettings.cs
  2. 70
      src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourceSettings.cs
  3. 47
      src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsTests.cs

6
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSettings.cs

@ -159,7 +159,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -159,7 +159,7 @@ namespace ICSharpCode.PackageManagement.Design
public IList<KeyValuePair<string, string>> GetNestedValues(string section, string key)
{
throw new NotImplementedException();
return new List<KeyValuePair<string, string>>();
}
public void SetNestedValues(string section, string key, IList<KeyValuePair<string, string>> values)
@ -218,7 +218,9 @@ namespace ICSharpCode.PackageManagement.Design @@ -218,7 +218,9 @@ namespace ICSharpCode.PackageManagement.Design
public IList<SettingValue> GetSettingValues(string section, bool isPath)
{
throw new NotImplementedException();
return Sections[section]
.Select(item => new SettingValue(item.Key, item.Value, false))
.ToList();
}
public void SetRepositoryPathSetting(string fullPath)

70
src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourceSettings.cs

@ -37,12 +37,15 @@ namespace ICSharpCode.PackageManagement @@ -37,12 +37,15 @@ namespace ICSharpCode.PackageManagement
ISettings settings;
ISettingsProvider settingsProvider;
IPackageSourceProvider packageSourceProvider;
PackageSource defaultPackageSource;
RegisteredPackageSources packageSources;
PackageSource activePackageSource;
public RegisteredPackageSourceSettings(ISettingsProvider settingsProvider)
: this(settingsProvider, RegisteredPackageSources.DefaultPackageSource)
: this(
settingsProvider,
RegisteredPackageSources.DefaultPackageSource)
{
}
@ -54,6 +57,7 @@ namespace ICSharpCode.PackageManagement @@ -54,6 +57,7 @@ namespace ICSharpCode.PackageManagement
this.defaultPackageSource = defaultPackageSource;
settings = settingsProvider.LoadSettings();
packageSourceProvider = CreatePackageSourceProvider(settings);
ReadActivePackageSource();
RegisterSolutionEvents();
@ -64,6 +68,11 @@ namespace ICSharpCode.PackageManagement @@ -64,6 +68,11 @@ namespace ICSharpCode.PackageManagement
settingsProvider.SettingsChanged += SettingsChanged;
}
static IPackageSourceProvider CreatePackageSourceProvider(ISettings settings)
{
return new PackageSourceProvider(settings, new [] { RegisteredPackageSources.DefaultPackageSource });
}
void ReadActivePackageSource()
{
IList<KeyValuePair<string, string>> packageSources = settings.GetValues(ActivePackageSourceSectionName);
@ -81,28 +90,9 @@ namespace ICSharpCode.PackageManagement @@ -81,28 +90,9 @@ namespace ICSharpCode.PackageManagement
void ReadPackageSources()
{
IEnumerable<PackageSource> savedPackageSources = GetPackageSourcesFromSettings();
IEnumerable<PackageSource> savedPackageSources = packageSourceProvider.LoadPackageSources();
packageSources = new RegisteredPackageSources(savedPackageSources, defaultPackageSource);
packageSources.CollectionChanged += PackageSourcesChanged;
if (!savedPackageSources.Any()) {
UpdatePackageSourceSettingsWithChanges();
}
}
IEnumerable<PackageSource> GetPackageSourcesFromSettings()
{
IList<KeyValuePair<string, string>> savedPackageSources = settings.GetValues(PackageSourcesSectionName);
foreach (PackageSource packageSource in PackageSourceConverter.ConvertFromKeyValuePairs(savedPackageSources)) {
packageSource.IsEnabled = IsPackageSourceEnabled(packageSource);
yield return packageSource;
}
}
bool IsPackageSourceEnabled(PackageSource packageSource)
{
string disabled = settings.GetValue(DisabledPackageSourceSectionName, packageSource.Name);
return String.IsNullOrEmpty(disabled);
}
void PackageSourcesChanged(object sender, NotifyCollectionChangedEventArgs e)
@ -112,42 +102,7 @@ namespace ICSharpCode.PackageManagement @@ -112,42 +102,7 @@ namespace ICSharpCode.PackageManagement
void UpdatePackageSourceSettingsWithChanges()
{
IList<KeyValuePair<string, string>> newPackageSourceSettings = GetSettingsFromPackageSources();
SavePackageSourceSettings(newPackageSourceSettings);
IList<KeyValuePair<string, string>> disabledPackageSourceSettings = GetSettingsForDisabledPackageSources();
SaveDisabledPackageSourceSettings(disabledPackageSourceSettings);
}
IList<KeyValuePair<string, string>> GetSettingsFromPackageSources()
{
return PackageSourceConverter.ConvertToKeyValuePairList(packageSources);
}
KeyValuePair<string, string> CreateKeyValuePairFromPackageSource(PackageSource source)
{
return new KeyValuePair<string, string>(source.Name, source.Source);
}
void SavePackageSourceSettings(IList<KeyValuePair<string, string>> newPackageSourceSettings)
{
settings.DeleteSection(PackageSourcesSectionName);
settings.SetValues(PackageSourcesSectionName, newPackageSourceSettings);
}
IList<KeyValuePair<string, string>> GetSettingsForDisabledPackageSources()
{
return packageSources
.Where(source => !source.IsEnabled)
.Select(source => new KeyValuePair<string, string>(source.Name, "true"))
.ToList();
}
void SaveDisabledPackageSourceSettings(IList<KeyValuePair<string, string>> disabledPackageSourceSettings)
{
settings.DeleteSection(DisabledPackageSourceSectionName);
if (disabledPackageSourceSettings.Any()) {
settings.SetValues(DisabledPackageSourceSectionName, disabledPackageSourceSettings);
}
packageSourceProvider.SavePackageSources(packageSources);
}
public PackageSource ActivePackageSource {
@ -193,6 +148,7 @@ namespace ICSharpCode.PackageManagement @@ -193,6 +148,7 @@ namespace ICSharpCode.PackageManagement
void SettingsChanged(object sender, EventArgs e)
{
settings = settingsProvider.LoadSettings();
packageSourceProvider = new PackageSourceProvider(settings);
ReadActivePackageSource();
ResetPackageSources();
}

47
src/AddIns/Misc/PackageManagement/Test/Src/PackageManagementOptionsTests.cs

@ -117,7 +117,7 @@ namespace PackageManagement.Tests @@ -117,7 +117,7 @@ namespace PackageManagement.Tests
}
[Test]
public void PackageSources_OnePackageSourceInSettings_ContainsSinglePackageSourceFromSettings()
public void PackageSources_OnePackageSourceInSettings_ContainsSinglePackageSourceFromSettingsAndDefaultPackageSource()
{
CreateSettings();
var packageSource = new PackageSource("http://codeplex.com", "Test");
@ -126,8 +126,9 @@ namespace PackageManagement.Tests @@ -126,8 +126,9 @@ namespace PackageManagement.Tests
RegisteredPackageSources actualSources = options.PackageSources;
List<PackageSource> expectedSources = new List<PackageSource>();
var expectedSources = new List<PackageSource>();
expectedSources.Add(packageSource);
expectedSources.Add(new PackageSource("https://www.nuget.org/api/v2/", "nuget.org"));
Assert.AreEqual(expectedSources, actualSources);
}
@ -146,26 +147,6 @@ namespace PackageManagement.Tests @@ -146,26 +147,6 @@ namespace PackageManagement.Tests
CollectionAssert.AreEqual(expectedSources, actualPackageSources);
}
[Test]
public void PackageSources_NoPackageSourceInSavedSettings_DefaultPackageSourceAddedToSettings()
{
CreateSettings();
CreateOptions(fakeSettings);
RegisteredPackageSources packageSources = options.PackageSources;
PackageSource defaultSource = RegisteredPackageSources.DefaultPackageSource;
var expectedSavedPackageSourceSettings = new List<KeyValuePair<string, string>>();
string name = defaultSource.Name;
string sourceUrl = defaultSource.Source;
expectedSavedPackageSourceSettings.Add(new KeyValuePair<string, string>(name, sourceUrl));
IList<KeyValuePair<string, string>> actualSavedPackageSourceSettings = fakeSettings.GetValuesPassedToSetValuesForPackageSourcesSection();
Assert.AreEqual(expectedSavedPackageSourceSettings, actualSavedPackageSourceSettings);
}
[Test]
public void PackageSources_OnePackageSourceAdded_PackageSourceSavedInSettings()
{
@ -430,7 +411,9 @@ namespace PackageManagement.Tests @@ -430,7 +411,9 @@ namespace PackageManagement.Tests
bool result = fakeSettings.AnyValuesPassedToSetValuesForDisabledPackageSourcesSection;
Assert.IsFalse(result);
IList<KeyValuePair<string, string>> actualSavedPackageSourceSettings =
fakeSettings.GetValuesPassedToSetValuesForDisabledPackageSourcesSection();
Assert.AreEqual(0, actualSavedPackageSourceSettings.Count);
}
[Test]
@ -498,18 +481,18 @@ namespace PackageManagement.Tests @@ -498,18 +481,18 @@ namespace PackageManagement.Tests
public void PackageSources_SolutionOpenedAfterInitialPackageSourcesLoaded_ContainsPackageSourceFromSolutionSpecificSettings()
{
CreateSettings();
var packageSource = new PackageSource("http://codeplex.com", "Test");
var packageSource = new PackageSource("https://www.nuget.org/api/v2/", "Official NuGet Gallery");
fakeSettings.AddFakePackageSource(packageSource);
CreateOptions(fakeSettings);
RegisteredPackageSources initialSources = options.PackageSources;
var expectedInitialSources = new List<PackageSource>();
expectedInitialSources.Add(packageSource);
ChangeSettingsReturnedBySettingsProvider();
packageSource = new PackageSource("http://codeplex.com", "Test");
packageSource = new PackageSource("https://www.nuget.org/api/v2/", "Official NuGet Gallery");
fakeSettings.AddFakePackageSource(packageSource);
var expectedSources = new List<PackageSource>();
expectedSources.Add(packageSource);
packageSource = new PackageSource("http://nuget.org", "ProjectSource");
packageSource = new PackageSource("http://codeplex.com", "ProjectSource");
fakeSettings.AddFakePackageSource(packageSource);
expectedSources.Add(packageSource);
OpenSolution();
@ -524,18 +507,18 @@ namespace PackageManagement.Tests @@ -524,18 +507,18 @@ namespace PackageManagement.Tests
public void PackageSources_SolutionClosedAfterInitialPackageSourcesLoaded_PackageSourcesReloaded()
{
CreateSettings();
var packageSource = new PackageSource("http://codeplex.com", "Test");
var packageSource = new PackageSource("https://www.nuget.org/api/v2/", "Official NuGet Gallery");
fakeSettings.AddFakePackageSource(packageSource);
var expectedInitialSources = new List<PackageSource>();
expectedInitialSources.Add(packageSource);
packageSource = new PackageSource("http://nuget.org", "ProjectSource");
packageSource = new PackageSource("http://projectsource.org", "ProjectSource");
fakeSettings.AddFakePackageSource(packageSource);
expectedInitialSources.Add(packageSource);
OpenSolution();
CreateOptions(fakeSettings);
RegisteredPackageSources initialSources = options.PackageSources;
ChangeSettingsReturnedBySettingsProvider();
packageSource = new PackageSource("http://codeplex.com", "Test");
packageSource = new PackageSource("https://www.nuget.org/api/v2/", "Official NuGet Gallery");
fakeSettings.AddFakePackageSource(packageSource);
var expectedSources = new List<PackageSource>();
expectedSources.Add(packageSource);
@ -551,11 +534,11 @@ namespace PackageManagement.Tests @@ -551,11 +534,11 @@ namespace PackageManagement.Tests
public void PackageSources_SolutionClosedAfterInitialPackageSourcesLoaded_ActivePackageSourceReloaded()
{
CreateSettings();
var packageSource = new PackageSource("http://codeplex.com", "Test");
var packageSource = new PackageSource("https://www.nuget.org/api/v2/", "Official NuGet Gallery");
fakeSettings.AddFakePackageSource(packageSource);
var expectedInitialSources = new List<PackageSource>();
expectedInitialSources.Add(packageSource);
var initialActivePackageSource = new PackageSource("http://nuget.org", "ProjectSource");
var initialActivePackageSource = new PackageSource("http://projectsource.org", "ProjectSource");
fakeSettings.AddFakePackageSource(initialActivePackageSource);
fakeSettings.SetFakeActivePackageSource(initialActivePackageSource);
expectedInitialSources.Add(initialActivePackageSource);
@ -564,7 +547,7 @@ namespace PackageManagement.Tests @@ -564,7 +547,7 @@ namespace PackageManagement.Tests
RegisteredPackageSources actualInitialPackageSources = options.PackageSources;
PackageSource actualInitialActivePackageSource = options.ActivePackageSource;
ChangeSettingsReturnedBySettingsProvider();
var expectedActivePackageSource = new PackageSource("http://codeplex.com", "Test");
var expectedActivePackageSource = new PackageSource("https://www.nuget.org/api/v2/", "Official NuGet Gallery");
fakeSettings.SetFakeActivePackageSource(expectedActivePackageSource);
fakeSettings.AddFakePackageSource(expectedActivePackageSource);
CloseSolution();

Loading…
Cancel
Save