public async Task CanInstallPackageWithNativeDepencencies() { var options = new NugetPluginCatalogOptions() { TypeFinderOptions = new TypeFinderOptions() { TypeFinderCriterias = new List <TypeFinderCriteria>() { new TypeFinderCriteria() { Query = (context, type) => { if (string.Equals(type.Name, "SqlConnection")) { return(true); } return(false); } } } } }; // Arrange var catalog = new NugetPackagePluginCatalog("Microsoft.Data.SqlClient", "2.1.2", options: options); // Act await catalog.Initialize(); var plugin = catalog.Single(); // This is the connection string part of the Weik.io docs. It provides readonly access to the Adventureworks database sample. // So it should be ok to have it here. dynamic conn = Activator.CreateInstance(plugin, "Server=tcp:adafydevtestdb001.database.windows.net,1433;User ID=docs;Password=3h1@*6PXrldU4F95;Integrated Security=false;Initial Catalog=adafyweikiodevtestdb001;"); conn.Open(); var cmd = conn.CreateCommand(); cmd.CommandText = "select top 1 * from SalesLT.Customer"; var reader = cmd.ExecuteReader(); while (reader.Read()) { Console.WriteLine(String.Format("{0}", reader[0])); } conn.Dispose(); }
public NugetFeedPluginCatalog(NuGetFeed packageFeed, string searchTerm = null, bool includePrereleases = false, int maxPackages = 128, string packagesFolder = null, Action <TypeFinderCriteriaBuilder> configureFinder = null, Dictionary <string, TypeFinderCriteria> criterias = null, NugetPluginCatalogOptions options = null) { _packageFeed = packageFeed; _searchTerm = searchTerm; _includePrereleases = includePrereleases; _maxPackages = maxPackages; PackagesFolder = packagesFolder ?? Path.Combine(Path.GetTempPath(), "NugetFeedPluginCatalog", Path.GetRandomFileName()); if (!Directory.Exists(PackagesFolder)) { Directory.CreateDirectory(PackagesFolder); } if (criterias == null) { criterias = new Dictionary <string, TypeFinderCriteria>(); } _options = options ?? new NugetPluginCatalogOptions(); if (configureFinder != null) { var builder = new TypeFinderCriteriaBuilder(); configureFinder(builder); var criteria = builder.Build(); _options.TypeFinderOptions.TypeFinderCriterias.Add(criteria); } foreach (var finderCriteria in criterias) { finderCriteria.Value.Tags = new List <string>() { finderCriteria.Key }; _options.TypeFinderOptions.TypeFinderCriterias.Add(finderCriteria.Value); } }
public async Task Initialize() { var nuGetDownloader = new NuGetDownloader(_options.LoggerFactory()); var packages = await nuGetDownloader.SearchPackagesAsync(_packageFeed, _searchTerm, maxResults : _maxPackages); foreach (var packageAndRepo in packages) { var options = new NugetPluginCatalogOptions() { TypeFinderOptions = _options.TypeFinderOptions }; var packageCatalog = new NugetPackagePluginCatalog(packageAndRepo.Package.Identity.Id, packageAndRepo.Package.Identity.Version.ToString(), _includePrereleases, _packageFeed, PackagesFolder, options: options); await packageCatalog.Initialize(); _pluginCatalogs.Add(packageCatalog); } IsInitialized = true; }
public async Task CanConfigureNamingOptions() { var options = new NugetPluginCatalogOptions() { PluginNameOptions = new PluginNameOptions() { PluginNameGenerator = (nameOptions, type) => type.FullName + "Modified" } }; // Arrange var catalog = new NugetPackagePluginCatalog("Serilog", "2.9.0", configureFinder: configure => { configure.HasName("Serilog.Core.Logger"); }, options: options); // Act await catalog.Initialize(); var plugin = catalog.Single(); // Assert Assert.EndsWith("Modified", plugin.Name); }