Пример #1
0
        internal IEnumerable <PluginInformation> GetPlugins(PluginChannelOption option)
        {
            RefreshLocalPlugins();
            var repo         = PackageRepositoryFactory.Default.CreateRepository(SelectedRepoUrl);
            var allowDevelop = option != PluginChannelOption.Stable;

            var fnd = repo.Search("XplorerPlugin", allowDevelop);

            foreach (var package in fnd)
            {
                if (option != PluginChannelOption.Versions)
                {
                    if (allowDevelop && !package.IsAbsoluteLatestVersion)
                    {
                        continue;
                    }
                    if (!allowDevelop && !package.IsLatestVersion)
                    {
                        continue;
                    }
                }
                var pv = new PluginInformation(package);
                if (_diskPlugins.ContainsKey(package.Id))
                {
                    pv.SetDirectoryInfo(_diskPlugins[package.Id]);
                }
                yield return(pv);
            }
        }
Пример #2
0
        internal IEnumerable <PluginInformation> GetPlugins(PluginChannelOption option, string winUiNugetVersion)
        {
            RefreshLocalPlugins();
            var repo           = PackageRepositoryFactory.Default.CreateRepository(SelectedRepoUrl);
            var allowDevelop   = option != PluginChannelOption.LatestStable;
            var invokingVerion = new SemanticVersion(winUiNugetVersion);

            var fnd         = repo.Search("XplorerPlugin", allowDevelop);
            var tmpPackages = new List <IPackage>();

            foreach (var package in fnd)
            {
                // drop develop if latest stable
                System.Diagnostics.Debug.WriteLine($"Evaluating {package}");
                if (option == PluginChannelOption.LatestStable && !string.IsNullOrEmpty(package.Version.SpecialVersion))
                {
                    continue;
                }
                // check it is compatible
                var sel = package.DependencySets.SelectMany(x => x.Dependencies.Where(y => y.Id.StartsWith("Xbim.WindowsUI"))).FirstOrDefault();
                if (sel != null && sel.VersionSpec.Satisfies(invokingVerion))
                {
                    tmpPackages.Add(package);
                }
            }

            if (option == PluginChannelOption.LatestStable || option == PluginChannelOption.LatestIncludingDevelopment)
            {
                // only one per ID
                var selPackages = new List <IPackage>();
                var grouped     = tmpPackages.GroupBy(x => x.Id);
                foreach (var element in grouped)
                {
                    var maxVersion = element.Max(x => x.Version);
                    selPackages.Add(element.FirstOrDefault(x => x.Version == maxVersion));
                }
                tmpPackages = selPackages;
            }


            foreach (var package in tmpPackages)
            {
                var pv = new PluginInformation(package);
                if (_diskPlugins.ContainsKey(package.Id))
                {
                    pv.SetDirectoryInfo(_diskPlugins[package.Id]);
                }
                yield return(pv);
            }
        }