Beispiel #1
0
        private bool AnyChanges(
            string projectPath,
            ITargetedDependenciesSnapshot targetedSnapshot,
            IDependency updatedDependency,
            GraphNode dependencyGraphNode,
            out IEnumerable <DependencyNodeInfo> nodesToAdd,
            out IEnumerable <DependencyNodeInfo> nodesToRemove,
            out IEnumerable <IDependency> updatedChildren,
            out string dependencyProjectPath)
        {
            var snapshot = GetSnapshot(projectPath, updatedDependency, out dependencyProjectPath);

            if (snapshot == null)
            {
                nodesToAdd            = Enumerable.Empty <DependencyNodeInfo>();
                nodesToRemove         = Enumerable.Empty <DependencyNodeInfo>();
                updatedChildren       = Enumerable.Empty <IDependency>();
                dependencyProjectPath = string.Empty;
                return(false);
            }

            updatedChildren = snapshot.TopLevelDependencies;
            var existingChildren    = GetExistingChildren(dependencyGraphNode);
            var updatedChildrenInfo = updatedChildren.Select(x => DependencyNodeInfo.FromDependency(x));

            return(AnyChanges(existingChildren, updatedChildrenInfo, out nodesToAdd, out nodesToRemove));
        }
        protected virtual bool AnyChanges(
            string projectPath,
            ITargetedDependenciesSnapshot targetedSnapshot,
            IDependency updatedDependency,
            GraphNode dependencyGraphNode,
            out IEnumerable <DependencyNodeInfo> nodesToAdd,
            out IEnumerable <DependencyNodeInfo> nodesToRemove,
            out string dependencyProjectPath)
        {
            dependencyProjectPath = projectPath;

            var existingChildrenInfo = GetExistingChildren(dependencyGraphNode);
            var updatedChildren      = targetedSnapshot.GetDependencyChildren(updatedDependency)
                                       ?? Enumerable.Empty <IDependency>();
            var updatedChildrenInfo = updatedChildren.Select(x => DependencyNodeInfo.FromDependency(x));

            return(AnyChanges(existingChildrenInfo, updatedChildrenInfo, out nodesToAdd, out nodesToRemove));
        }
        protected static IEnumerable <DependencyNodeInfo> GetExistingChildren(GraphNode inputGraphNode)
        {
            var children = new List <DependencyNodeInfo>();

            foreach (GraphNode childNode in inputGraphNode.FindDescendants())
            {
                string id = childNode.GetValue <string>(DependenciesGraphSchema.DependencyIdProperty);
                if (string.IsNullOrEmpty(id))
                {
                    continue;
                }

                var dependencyInfo = new DependencyNodeInfo
                {
                    Id       = id,
                    Caption  = childNode.Label,
                    Resolved = childNode.GetValue <bool>(DependenciesGraphSchema.ResolvedProperty)
                };

                children.Add(dependencyInfo);
            }

            return(children);
        }
Beispiel #4
0
        private bool AnyChanges(
            IDependency updatedDependency,
            GraphNode dependencyGraphNode,
            out IReadOnlyList <DependencyNodeInfo> nodesToAdd,
            out IReadOnlyList <DependencyNodeInfo> nodesToRemove,
            out System.Collections.Generic.IReadOnlyCollection <IDependency> updatedChildren,
            out string dependencyProjectPath)
        {
            ITargetedDependenciesSnapshot snapshot = GetSnapshot(updatedDependency);

            if (snapshot == null)
            {
                nodesToAdd            = default;
                nodesToRemove         = default;
                updatedChildren       = default;
                dependencyProjectPath = default;
                return(false);
            }

            dependencyProjectPath = updatedDependency.FullPath;
            updatedChildren       = snapshot.TopLevelDependencies;
            IReadOnlyList <DependencyNodeInfo> existingChildren    = GetExistingChildren(dependencyGraphNode);
            IReadOnlyList <DependencyNodeInfo> updatedChildrenInfo = updatedChildren.Select(x => DependencyNodeInfo.FromDependency(x)).ToList();

            return(AnyChanges(existingChildren, updatedChildrenInfo, out nodesToAdd, out nodesToRemove));
        }
Beispiel #5
0
        protected virtual bool AnyChanges(
            string projectPath,
            ITargetedDependenciesSnapshot targetedSnapshot,
            IDependency updatedDependency,
            GraphNode dependencyGraphNode,
            out IReadOnlyList <DependencyNodeInfo> nodesToAdd,
            out IReadOnlyList <DependencyNodeInfo> nodesToRemove)
        {
            IReadOnlyList <DependencyNodeInfo> existingChildrenInfo = GetExistingChildren(dependencyGraphNode);
            ImmutableArray <IDependency>       updatedChildren      = targetedSnapshot.GetDependencyChildren(updatedDependency);
            IReadOnlyList <DependencyNodeInfo> updatedChildrenInfo  = updatedChildren.Select(x => DependencyNodeInfo.FromDependency(x)).ToList();

            return(AnyChanges(existingChildrenInfo, updatedChildrenInfo, out nodesToAdd, out nodesToRemove));
        }