예제 #1
0
        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}'");
                }
            }
        }