Ejemplo n.º 1
0
        private void SearchAndSelect(SearchOptions searchOptions)
        {
            _listPoms.BeginUpdate();
            _treePoms.BeginUpdate();

            try
            {
                var selected      = _views.AllViews.Where(v => v.Checked).Select(v => v.ProjectNode);
                var selector      = new DependencySelector(ProjectsRepo, searchOptions);
                var nodesToSelect = selector.SelectUsages(selected);

                foreach (var node in nodesToSelect)
                {
                    ProjectView view = _views.GetProjectView(node);
                    view.Checked = true;
                }
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex);
                ShowError("Search failed", ex.Message);
            }
            finally
            {
                _listPoms.EndUpdate();
                _treePoms.EndUpdate();
            }
        }
Ejemplo n.º 2
0
        public void ExecuteFor(IProject targetProject, int?position = null, int?stopAtPosition = null)
        {
            // var selected = _views.AllViews.Where(v => v.Checked).Select(v => v.ProjectNode);
            var searchOptions = new SearchOptions
            {
                LookForDependent = true,
                LookForParents   = true,
                LookForPlugin    = true,
                OnlyDirectUsages = true,
                StrictVersion    = false
            };

            var selector  = new DependencySelector(_projects, searchOptions);
            var extractor = new ProjectDataExtractor();

            var queue = new Queue <IProject>();

            queue.Enqueue(targetProject);

            while (queue.Count != 0)
            {
                var project = queue.Dequeue();

                if (project.Version.IsRelease)                 // explicit release
                {
                    project.Version = project.Version.Operations().ToSnapshotWithVersionIncrement(position, stopAtPosition);
                }
                else if (project.Version.IsSnapshot)                 // explicit snapshot, just propogate
                {
                }
                else if (!project.Version.IsDefined && project.Parent != null && project.Parent.Version.IsRelease)                  // inherited from release
                {
                    project.Version = project.Parent.Version.Operations().ToSnapshotWithVersionIncrement(position, stopAtPosition); // make it explicit
                }
                else if (!project.Version.IsDefined && project.Parent != null && project.Parent.Version.IsSnapshot)                 // inherited from snapshot, just propogate
                {
                }
                else
                {
                    throw new InvalidOperationException($"why project {project} in queue");
                }
                var reference = extractor.Extract(project);

                foreach (var dependentProject in selector.SelectUsages(reference))
                {
                    dependentProject.Operations().PropagateVersionToUsages(reference);
                    if (dependentProject.Operations().HasProjectAsParent(reference))
                    {
                        queue.Enqueue(dependentProject);
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public void Execute()
        {
            var searchOptions = new SearchOptions
            {
                LookForDependent = true,
                LookForParents   = true,
                LookForPlugin    = true,
                OnlyDirectUsages = true,
                StrictVersion    = false
            };

            var selector = new DependencySelector(_projects, searchOptions);

            foreach (var projectNode in _projects.AllProjectNodes.Where(pn => pn.IsSnapshot))
            {
                projectNode.SwitchToRelease(_postfix);
                foreach (var dependentProject in selector.SelectUsages(projectNode))
                {
                    dependentProject.PropagateVersionToUsages(projectNode.Project);
                }
            }
        }
Ejemplo n.º 4
0
        public IEnumerable <IProjectValidationProblem> Validate(IExecutionContext context)
        {
            var searchOptions = new SearchOptions
            {
                LookForDependent = true,
                LookForParents   = true,
                LookForPlugin    = true,
                OnlyDirectUsages = true,
                StrictVersion    = true
            };

            var selector = new DependencySelector(context, searchOptions);

            foreach (var module in context.AllExternalModules)
            {
                if (!selector.SelectUsages(module).Any())
                {
                    yield return(new ValidationProblem("moduleuseless")
                    {
                        ProjectReference = module,
                        Description = "external module not used",
                        Severity = ProblemSeverity.ProjectWarning
                    });
                }
                //	DelegatedFix fix = new DelegatedFix
                //	{
                //		ShouldBeConfirmed = true,
                //		Title = "Delete external module",
                //		DelegatedAction = () =>
                //		{
                //			_externalModules.Remove(module);
                //			_externalModules.AllModules.Save();
                //		}
                //	};
                //	error.AddFix(fix);
                //	ValidationErrors.Add(error);
                //}
            }
        }
Ejemplo n.º 5
0
        public void ExecuteFor(ProjectNode currentProjectNode)
        {
            // var selected = _views.AllViews.Where(v => v.Checked).Select(v => v.ProjectNode);
            var searchOptions = new SearchOptions
            {
                LookForDependent = true,
                LookForParents   = true,
                LookForPlugin    = true,
                OnlyDirectUsages = true,
                StrictVersion    = false
            };

            var selector = new DependencySelector(_projects, searchOptions);

            var queue = new Queue <ProjectNode>();

            queue.Enqueue(currentProjectNode);

            while (queue.Count != 0)
            {
                var projectNode = queue.Dequeue();
                if (!projectNode.IsSnapshot)
                {
                    projectNode.IncrementVersionAndEnableSnapshot();
                }

                foreach (var dependentProject in selector.SelectUsages(projectNode))
                {
                    dependentProject.PropagateVersionToUsages(projectNode.Project);
                    if (!dependentProject.IsSnapshot)
                    {
                        queue.Enqueue(dependentProject);
                    }
                }
            }

            // fix tree
        }