Skip to content

Commit 7c1190e

Browse files
committed
Fixed tagging functionality of the Nuget catalogs
1 parent 1413dc0 commit 7c1190e

File tree

6 files changed

+69
-10
lines changed

6 files changed

+69
-10
lines changed

samples/WebAppWithNuget/Startup.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using Microsoft.Extensions.Hosting;
1212
using Microsoft.Extensions.Logging;
1313
using Weikio.PluginFramework.Catalogs;
14+
using Weikio.PluginFramework.Catalogs.NuGet;
1415
using Weikio.PluginFramework.Samples.Shared;
1516

1617
namespace WebAppWithNuget

src/Weikio.PluginFramework.Catalogs.NuGet/NugetFeedPluginCatalog.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Linq;
55
using System.Threading.Tasks;
66
using Weikio.PluginFramework.Abstractions;
7+
using Weikio.PluginFramework.Catalogs.NuGet;
78
using Weikio.PluginFramework.Catalogs.NuGet.PackageManagement;
89
using Weikio.PluginFramework.TypeFinding;
910

@@ -20,7 +21,6 @@ public class NugetFeedPluginCatalog : IPluginCatalog
2021
private readonly HashSet<string> _pluginAssemblyNames = new HashSet<string>();
2122

2223
private List<NugetPackagePluginCatalog> _pluginCatalogs = new List<NugetPackagePluginCatalog>();
23-
private Dictionary<string, TypeFinderCriteria> _typeFinderCriterias;
2424
private readonly NugetPluginCatalogOptions _options;
2525

2626
public string PackagesFolder { get; }
@@ -46,7 +46,6 @@ public NugetFeedPluginCatalog(NuGetFeed packageFeed, string searchTerm = null,
4646
criterias = new Dictionary<string, TypeFinderCriteria>();
4747
}
4848

49-
_typeFinderCriterias = criterias;
5049
_options = options ?? new NugetPluginCatalogOptions();
5150

5251
if (configureFinder != null)
@@ -56,8 +55,15 @@ public NugetFeedPluginCatalog(NuGetFeed packageFeed, string searchTerm = null,
5655

5756
var criteria = builder.Build();
5857

59-
_typeFinderCriterias.Add("", criteria);
58+
_options.TypeFinderOptions.TypeFinderCriterias.Add(criteria);
6059
}
60+
61+
foreach (var finderCriteria in criterias)
62+
{
63+
finderCriteria.Value.Tags = new List<string>() { finderCriteria.Key };
64+
65+
_options.TypeFinderOptions.TypeFinderCriterias.Add(finderCriteria.Value);
66+
}
6167
}
6268

6369
Plugin IPluginCatalog.Get(string name, Version version)
@@ -87,8 +93,10 @@ public async Task Initialize()
8793

8894
foreach (var packageAndRepo in packages)
8995
{
96+
var options = new NugetPluginCatalogOptions() { TypeFinderOptions = _options.TypeFinderOptions };
97+
9098
var packageCatalog = new NugetPackagePluginCatalog(packageAndRepo.Package.Identity.Id, packageAndRepo.Package.Identity.Version.ToString(),
91-
_includePrereleases, _packageFeed, PackagesFolder, criterias: _typeFinderCriterias);
99+
_includePrereleases, _packageFeed, PackagesFolder, options: options);
92100

93101
await packageCatalog.Initialize();
94102

src/Weikio.PluginFramework.Catalogs.NuGet/NugetPackagePluginCatalog.cs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Linq;
55
using System.Threading.Tasks;
66
using Weikio.PluginFramework.Abstractions;
7+
using Weikio.PluginFramework.Catalogs.NuGet;
78
using Weikio.PluginFramework.Catalogs.NuGet.PackageManagement;
89
using Weikio.PluginFramework.TypeFinding;
910

@@ -19,13 +20,12 @@ public class NugetPackagePluginCatalog : IPluginCatalog
1920

2021
private readonly HashSet<string> _pluginAssemblyFilePaths = new HashSet<string>();
2122
private readonly List<AssemblyPluginCatalog> _pluginCatalogs = new List<AssemblyPluginCatalog>();
22-
private readonly Dictionary<string, TypeFinderCriteria> _typeFinderCriterias;
2323
private readonly NugetPluginCatalogOptions _options;
2424

2525
public string PackagesFolder { get; }
2626

2727
public NugetPackagePluginCatalog(string packageName, string packageVersion = null, bool includePrerelease = false, NuGetFeed packageFeed = null,
28-
string packagesFolder = null, Action<TypeFinderCriteriaBuilder> configureFinder = null, Dictionary<string, TypeFinderCriteria> criterias = null,
28+
string packagesFolder = null, Action<TypeFinderCriteriaBuilder> configureFinder = null, Dictionary<string, TypeFinderCriteria> criterias = null,
2929
NugetPluginCatalogOptions options = null)
3030
{
3131
_packageName = packageName;
@@ -45,7 +45,6 @@ public NugetPackagePluginCatalog(string packageName, string packageVersion = nul
4545
criterias = new Dictionary<string, TypeFinderCriteria>();
4646
}
4747

48-
_typeFinderCriterias = criterias;
4948
_options = options ?? new NugetPluginCatalogOptions();
5049

5150
if (configureFinder != null)
@@ -55,7 +54,14 @@ public NugetPackagePluginCatalog(string packageName, string packageVersion = nul
5554

5655
var criteria = builder.Build();
5756

58-
_typeFinderCriterias.Add("", criteria);
57+
_options.TypeFinderOptions.TypeFinderCriterias.Add(criteria);
58+
}
59+
60+
foreach (var finderCriteria in criterias)
61+
{
62+
finderCriteria.Value.Tags = new List<string>() { finderCriteria.Key };
63+
64+
_options.TypeFinderOptions.TypeFinderCriterias.Add(finderCriteria.Value);
5965
}
6066
}
6167

@@ -95,7 +101,7 @@ public async Task Initialize()
95101

96102
foreach (var pluginAssemblyFilePath in _pluginAssemblyFilePaths)
97103
{
98-
var options = new AssemblyPluginCatalogOptions { TypeFinderCriterias = _typeFinderCriterias };
104+
var options = new AssemblyPluginCatalogOptions { TypeFinderOptions = _options.TypeFinderOptions };
99105

100106
var assemblyCatalog = new AssemblyPluginCatalog(pluginAssemblyFilePath, options);
101107
await assemblyCatalog.Initialize();

src/Weikio.PluginFramework.Catalogs.NuGet/NugetPluginCatalogOptions.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
using System;
22
using NuGet.Common;
33
using Weikio.PluginFramework.Catalogs.NuGet.PackageManagement;
4+
using Weikio.PluginFramework.TypeFinding;
45

5-
namespace Weikio.PluginFramework.Catalogs
6+
namespace Weikio.PluginFramework.Catalogs.NuGet
67
{
78
public class NugetPluginCatalogOptions
89
{
910
/// <summary>
1011
/// Gets or sets the function which is used to create the logger for Nuget activities
1112
/// </summary>
1213
public Func <ILogger> LoggerFactory { get; set; } = Defaults.LoggerFactory;
14+
15+
/// <summary>
16+
/// Gets or sets the <see cref="TypeFinderOptions"/>.
17+
/// </summary>
18+
public TypeFinderOptions TypeFinderOptions { get; set; } = new TypeFinderOptions();
1319

1420
public static class Defaults
1521
{

tests/integration/Weikio.PluginFramework.Catalogs.NuGet.Tests/NugetFeedPluginCatalogTests.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Reflection;
55
using System.Runtime.Versioning;
66
using System.Threading.Tasks;
7+
using Weikio.PluginFramework.Abstractions;
78
using Weikio.PluginFramework.Catalogs;
89
using Xunit;
910

@@ -50,5 +51,24 @@ public async Task InstallUsingTagFilter()
5051
Assert.StartsWith("4.", plugins[0].Version.ToString());
5152
AssertAssemblyFrameWork(".NETStandard,Version=v2.0", plugins.Single().Assembly);
5253
}
54+
55+
[Fact]
56+
public async Task CanTag()
57+
{
58+
// Arrange
59+
var feed = new NuGetFeed("nuget.org", "https://api.nuget.org/v3/index.json");
60+
var catalog = new NugetFeedPluginCatalog(feed, searchTerm: "tags:mocking", maxPackages: 1, configureFinder: configure =>
61+
{
62+
configure.HasName("Moq.Range")
63+
.Tag("MockSolutions");
64+
});
65+
66+
// Act
67+
await catalog.Initialize();
68+
var plugin = catalog.Single();
69+
70+
// Assert
71+
Assert.Equal("MockSolutions", plugin.Tag);
72+
}
5373
}
5474
}

tests/integration/Weikio.PluginFramework.Catalogs.NuGet.Tests/NugetPackagePluginCatalogTests.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,24 @@ public async Task InstallPackageWithoutDepencencies()
5050
Assert.StartsWith("2.9.0", plugins[0].Version.ToString());
5151
AssertAssemblyFrameWork(".NETStandard,Version=v2.0", catalog.Single().Assembly);
5252
}
53+
54+
[Fact]
55+
public async Task CanTag()
56+
{
57+
// Arrange
58+
var catalog = new NugetPackagePluginCatalog("Serilog", "2.9.0", configureFinder: configure =>
59+
{
60+
configure.HasName("Serilog.Core.Logger")
61+
.Tag("CustomTag");
62+
});
63+
64+
// Act
65+
await catalog.Initialize();
66+
var plugin = catalog.Single();
67+
68+
// Assert
69+
Assert.Equal("CustomTag", plugin.Tag);
70+
}
5371

5472
[Fact]
5573
public async Task InstallPackageWithDepencencies()

0 commit comments

Comments
 (0)