public static IProjectItemProvider CreateWithAdd(IProjectTree inputTree)
        {
            var mock = new Mock <IProjectItemProvider>();

            mock.Setup(a => a.AddAsync(It.IsAny <string>()))
            .Returns <string>(path =>
            {
                var fileName     = Path.GetFileName(path);
                var parentFolder = Path.GetDirectoryName(path);
                var newSubTree   = ProjectTreeParser.Parse($@"{fileName}, FilePath: ""{path}""");

                // Find the node that has the parent folder and add the new node as a child.
                foreach (var node in inputTree.GetSelfAndDescendentsBreadthFirst())
                {
                    string nodeFolderPath = node.IsFolder ? node.FilePath : Path.GetDirectoryName(node.FilePath);
                    if (nodeFolderPath.TrimEnd(Path.DirectorySeparatorChar).Equals(parentFolder))
                    {
                        if (node.TryFindImmediateChild(fileName, out IProjectTree child) && !child.Flags.IsIncludedInProject())
                        {
                            var newFlags = child.Flags.Remove(ProjectTreeFlags.Common.IncludeInProjectCandidate);
                            child.SetProperties(flags: newFlags);
                        }
                        else
                        {
                            node.Add(newSubTree);
                        }
                        return(Task.FromResult(Mock.Of <IProjectItem>()));
                    }
                }

                return(Task.FromResult <IProjectItem>(null));
            });

            return(mock.Object);
        }
Beispiel #2
0
        private static IProjectTree?FindAppXamlFile(IProjectTree root)
        {
            foreach (IProjectItemTree item in root.GetSelfAndDescendentsBreadthFirst().OfType <IProjectItemTree>())
            {
                if (StringComparers.ItemTypes.Equals(item.Item?.ItemType, "ApplicationDefinition"))
                {
                    return(item);
                }
            }

            return(null);
        }
Beispiel #3
0
        private static IProjectTree FindByPathInternal(IProjectTree root, string path)
        {
            foreach (IProjectTree node in root.GetSelfAndDescendentsBreadthFirst())
            {
                if (string.Equals(node.FilePath, path, StringComparison.OrdinalIgnoreCase))
                {
                    return(node);
                }
            }

            return(null);
        }
Beispiel #4
0
        private string FindAppDesignerFolder()
        {
            IProjectTree root = _projectTree.Value.CurrentTree;

            IProjectTree folder = root.GetSelfAndDescendentsBreadthFirst().FirstOrDefault(child => child.Flags.HasFlag(ProjectTreeFlags.Common.AppDesignerFolder));

            if (folder == null)
            {
                return(null);
            }

            return(_projectTree.Value.TreeProvider.GetRootedAddNewItemDirectory(folder));
        }
Beispiel #5
0
        public IProjectTree?FindByPath(IProjectTree?root, string path)
        {
            if (root == null)
            {
                return(null);
            }

            IProjectTree?dependenciesNode = root.Flags.Contains(DependencyTreeFlags.DependenciesRootNodeFlags)
                ? root
                : root.GetSubTreeNode(DependencyTreeFlags.DependenciesRootNodeFlags);

            return(dependenciesNode?.GetSelfAndDescendentsBreadthFirst()
                   .FirstOrDefault((node, p) => string.Equals(node.FilePath, p, StringComparisons.Paths), path));
        }
Beispiel #6
0
        public override IProjectTree FindByPath(IProjectTree root, string path)
        {
            if (root == null)
            {
                return(null);
            }

            IProjectTree dependenciesNode = root.Flags.Contains(DependencyTreeFlags.DependenciesRootNodeFlags)
                ? root
                : root.GetSubTreeNode(DependencyTreeFlags.DependenciesRootNodeFlags);

            return(dependenciesNode?.GetSelfAndDescendentsBreadthFirst()
                   .FirstOrDefault(node => string.Equals(node.FilePath, path, StringComparison.OrdinalIgnoreCase)));
        }
Beispiel #7
0
        public IProjectTree?FindByPath(IProjectTree root, string path)
        {
            Requires.NotNull(root, nameof(root));
            Requires.NotNullOrEmpty(path, nameof(path));

            foreach (IProjectTree child in root.GetSelfAndDescendentsBreadthFirst())
            {
                if (StringComparer.CurrentCultureIgnoreCase.Equals(child.FilePath, path))
                {
                    return(child);
                }
            }

            return(null);
        }
 private static IProjectTree?FindAppDesignerFolder(IProjectTree root)
 {
     return(root.GetSelfAndDescendentsBreadthFirst()
            .FirstOrDefault(child => child.Flags.HasFlag(ProjectTreeFlags.Common.AppDesignerFolder)));
 }