protected virtual void GetVirtualSolutionFolderTemplateObjects(ITemplateObject root, IList <VirtualSolutionFolder> virtualSolutionFolders, string parentPath) { foreach (var virtualSolutionFolder in virtualSolutionFolders) { var virtualFolderObject = new TemplateObject { Type = TemplateObjectType.Folder, DestinationFullPath = Path.Combine(parentPath, virtualSolutionFolder.Name) }; foreach (var filePath in virtualSolutionFolder.Files) { virtualFolderObject.ChildObjects.Add(new TemplateObject { ChildObjects = null, Type = TemplateObjectType.File, OriginalFullPath = filePath, DestinationFullPath = ReplaceTokensService.Replace(BuildDestinationPathService.Build(filePath)) }); } if (virtualSolutionFolder.SubFolders == null || !virtualSolutionFolders.Any()) { continue; } GetVirtualSolutionFolderTemplateObjects(virtualFolderObject, virtualSolutionFolder.SubFolders, virtualFolderObject.DestinationFullPath); root.ChildObjects.Add(virtualFolderObject); } }
protected virtual ITemplateObject GetTemplateObjectFromFile(string filePath) { var isIgnored = IsIgnored(filePath); return(new TemplateObject { Type = IsProjectToAttach(filePath) ? TemplateObjectType.Project : TemplateObjectType.File, ChildObjects = null, OriginalFullPath = filePath, IsIgnored = isIgnored, DestinationFullPath = isIgnored ? "" : ReplaceTokensService.Replace(BuildDestinationPathService.Build(filePath)) }); }
protected virtual IList <ITemplateObject> GetTemplateObjectFromDirectory(string directoryPath) { var templateObjects = Directory.EnumerateFiles(directoryPath).Select(GetTemplateObjectFromFile) .Where(objectFromFile => objectFromFile != null).ToList(); templateObjects.AddRange(Directory.EnumerateDirectories(directoryPath) .Select(directory => new TemplateObject { Type = IsSourceRoot(directory) ? TemplateObjectType.SourceRoot : TemplateObjectType.Folder, ChildObjects = GetTemplateObjectFromDirectory(directory), OriginalFullPath = directory, DestinationFullPath = ReplaceTokensService.Replace(BuildDestinationPathService.Build(directory)) })); return(templateObjects); }