public static bool LoadSourceControlData(DOS2DEModuleData Data, IEnumerable <ModProjectData> modProjects) { if (Directory.Exists(Data.Settings.GitRootDirectory)) { int totalSuccess = 0; var projectFiles = Directory.EnumerateFiles(Data.Settings.GitRootDirectory, DirectoryEnumerationOptions.Files | DirectoryEnumerationOptions.Recursive, new DirectoryEnumerationFilters { InclusionFilter = (f) => { return(f.FileName.Equals("SourceControlGenerator.json", StringComparison.OrdinalIgnoreCase)); } }).Select(x => SourceControlData.FromPath(x)); foreach (var project in modProjects) { var sourceControlData = projectFiles.FirstOrDefault(x => x.ProjectUUID == project.UUID); if (sourceControlData != null) { project.GitData = sourceControlData; project.GitGenerated = true; var gitDirectory = Path.Combine(Path.GetDirectoryName(sourceControlData.SourceFile), ".git"); if (Directory.Exists(gitDirectory)) { var lastModifiedDate = File.GetLastWriteTime(gitDirectory); if (lastModifiedDate != null && project.ModuleInfo.ModifiedDate.Ticks < lastModifiedDate.Ticks) { project.ModuleInfo.ModifiedDate = lastModifiedDate; } } totalSuccess += 1; } } return(totalSuccess > 0); } return(false); }
public void OpenProjectReadmeInMarkdownConverter(object obj) { Log.Here().Activity("Opening readme..."); if (obj is IProjectData projectData) { var projectGitFolder = ""; if (projectData.GitData != null && !String.IsNullOrEmpty(projectData.GitData.RepositoryPath) && Directory.Exists(projectData.GitData.RepositoryPath)) { projectGitFolder = projectData.GitData.RepositoryPath; Log.Here().Activity($"Project has git data. Setting project git folder to '{projectGitFolder}'"); } else { Log.Here().Activity($"Project does not have git data. Looking for SourceControlGenerator.json files."); var projectFiles = Directory.EnumerateFiles(CurrentModule.ModuleData.ModuleSettings.GitRootDirectory, DirectoryEnumerationOptions.Files | DirectoryEnumerationOptions.Recursive, new DirectoryEnumerationFilters { InclusionFilter = (f) => { return(f.FileName.Equals("SourceControlGenerator.json", StringComparison.OrdinalIgnoreCase)); } }).Select(x => SourceControlData.FromPath(x)); //var projectGitFolder = Path.Combine(CurrentModule.ModuleData.ModuleSettings.GitRootDirectory, projectData.ProjectFolder); var sourceFile = projectFiles.FirstOrDefault(x => x.ProjectUUID == projectData.UUID)?.SourceFile; if (!String.IsNullOrEmpty(sourceFile)) { projectGitFolder = Path.GetDirectoryName(sourceFile); } else { Log.Here().Activity($"Could not find SourceControlGenerator.json for project {projectData.ProjectName} with UUID {projectData.UUID}."); } } if (!String.IsNullOrEmpty(projectGitFolder) && Directory.Exists(projectGitFolder)) { var readmeFilePath = Path.Combine(projectGitFolder, "README.md"); if (File.Exists(readmeFilePath)) { try { var converterData = mainWindow.MarkdownConverterWindow.ViewData; converterData.SetBatchExportRoot(Path.Combine(DefaultPaths.ModuleExportFolder(CurrentModule.ModuleData), projectData.ProjectName)); converterData.LoadInputFile(readmeFilePath); converterData.Mode = MarkdownConverterMode.Batch; MenuAction_ToggleMarkdownWindow(); } catch (Exception ex) { Log.Here().Error($"Error loading ({readmeFilePath}):\n{ex.ToString()}"); } } else { Log.Here().Error($"Cannot find project README.md at '{readmeFilePath}'"); } } else { Log.Here().Error($"Cannot find project git folder at '{projectGitFolder}'"); } } }