|
|
|
|
@@ -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
|
|
|
|
|
|