Пример #1
0
        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();
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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;
        }
Пример #4
0
        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);
        }