Get flat project list
This commit is contained in:
@@ -10,6 +10,7 @@ public class SharpIdeSolutionModel : ISharpIdeNode
|
||||
public required string FilePath { get; set; }
|
||||
public required List<SharpIdeProjectModel> Projects { get; set; }
|
||||
public required List<SharpIdeSolutionFolder> Folders { get; set; }
|
||||
public required List<SharpIdeProjectModel> AllProjects { get; set; }
|
||||
}
|
||||
public class SharpIdeSolutionFolder : ISharpIdeNode
|
||||
{
|
||||
|
||||
@@ -12,39 +12,47 @@ public static class VsPersistenceMapper
|
||||
var intermediateModel = await IntermediateMapper.GetIntermediateModel(solutionFilePath, cancellationToken);
|
||||
|
||||
var solutionName = Path.GetFileName(solutionFilePath);
|
||||
var allProjects = new List<SharpIdeProjectModel>();
|
||||
var solutionModel = new SharpIdeSolutionModel
|
||||
{
|
||||
Name = solutionName,
|
||||
FilePath = solutionFilePath,
|
||||
Projects = intermediateModel.Projects.Select(GetSharpIdeProjectModel).ToList(),
|
||||
Projects = intermediateModel.Projects.Select(s => GetSharpIdeProjectModel(s, allProjects)).ToList(),
|
||||
AllProjects = allProjects,
|
||||
Folders = intermediateModel.SolutionFolders.Select(s => new SharpIdeSolutionFolder
|
||||
{
|
||||
Name = s.Model.Name,
|
||||
Files = s.Files.Select(GetSharpIdeFile).ToList(),
|
||||
Folders = s.Folders.Select(GetSharpIdeSolutionFolder).ToList(),
|
||||
Projects = s.Projects.Select(GetSharpIdeProjectModel).ToList()
|
||||
Folders = s.Folders.Select(x => GetSharpIdeSolutionFolder(x, allProjects)).ToList(),
|
||||
Projects = s.Projects.Select(x => GetSharpIdeProjectModel(x, allProjects)).ToList()
|
||||
}).ToList(),
|
||||
};
|
||||
|
||||
timer.Stop();
|
||||
Console.WriteLine($"Solution model fully created in {timer.ElapsedMilliseconds} ms");
|
||||
|
||||
return solutionModel;
|
||||
}
|
||||
private static SharpIdeProjectModel GetSharpIdeProjectModel(IntermediateProjectModel projectModel) => new SharpIdeProjectModel
|
||||
private static SharpIdeProjectModel GetSharpIdeProjectModel(IntermediateProjectModel projectModel, List<SharpIdeProjectModel> allProjects)
|
||||
{
|
||||
Name = projectModel.Model.ActualDisplayName,
|
||||
FilePath = projectModel.FullFilePath,
|
||||
Files = TreeMapperV2.GetFiles(projectModel.FullFilePath),
|
||||
Folders = TreeMapperV2.GetSubFolders(projectModel.FullFilePath),
|
||||
MsBuildEvaluationProject = Test.GetProject(projectModel.FullFilePath)
|
||||
};
|
||||
var project = new SharpIdeProjectModel
|
||||
{
|
||||
Name = projectModel.Model.ActualDisplayName,
|
||||
FilePath = projectModel.FullFilePath,
|
||||
Files = TreeMapperV2.GetFiles(projectModel.FullFilePath),
|
||||
Folders = TreeMapperV2.GetSubFolders(projectModel.FullFilePath),
|
||||
MsBuildEvaluationProject = Test.GetProject(projectModel.FullFilePath)
|
||||
};
|
||||
allProjects.Add(project);
|
||||
return project;
|
||||
}
|
||||
|
||||
private static SharpIdeSolutionFolder GetSharpIdeSolutionFolder(IntermediateSlnFolderModel folderModel) => new SharpIdeSolutionFolder()
|
||||
private static SharpIdeSolutionFolder GetSharpIdeSolutionFolder(IntermediateSlnFolderModel folderModel, List<SharpIdeProjectModel> allProjects) => new SharpIdeSolutionFolder()
|
||||
{
|
||||
Name = folderModel.Model.Name,
|
||||
Files = folderModel.Files.Select(GetSharpIdeFile).ToList(),
|
||||
Folders = folderModel.Folders.Select(GetSharpIdeSolutionFolder).ToList(),
|
||||
Projects = folderModel.Projects.Select(GetSharpIdeProjectModel).ToList()
|
||||
Folders = folderModel.Folders.Select(s => GetSharpIdeSolutionFolder(s, allProjects)).ToList(),
|
||||
Projects = folderModel.Projects.Select(s => GetSharpIdeProjectModel(s, allProjects)).ToList()
|
||||
};
|
||||
|
||||
private static SharpIdeFile GetSharpIdeFile(IntermediateSlnFolderFileModel fileModel) => new SharpIdeFile
|
||||
|
||||
Reference in New Issue
Block a user