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(); } }
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); } } } }
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); } } }
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); //} } }
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 }