private TempGenerationResult CompareTempGenerationWithProject()

in code/src/CoreTemplateStudio/CoreTemplateStudio.Core/Gen/NewItemGenController.cs [146:199]


        private TempGenerationResult CompareTempGenerationWithProject()
        {
            var parentGenerationOutputPath = Directory.GetParent(GenContext.Current.GenerationOutputPath).FullName;
            var parentDestinationPath = Directory.GetParent(GenContext.Current.DestinationPath).FullName;
            var result = new TempGenerationResult();
            var files = Directory
                .EnumerateFiles(parentGenerationOutputPath, "*", SearchOption.AllDirectories)
                .Where(f => !Regex.IsMatch(f, MergeConfiguration.PostactionRegex) && !Regex.IsMatch(f, MergeConfiguration.FailedPostactionRegex))
                .ToList();

            foreach (var file in files)
            {
                var destFilePath = file.GetDestinationPath();
                var fileName = file.GetPathRelativeToGenerationParentPath();

                var projectFileName = Path.GetFullPath(Path.Combine(parentDestinationPath, fileName));

                if (File.Exists(projectFileName))
                {
                    if (GenContext.Current.MergeFilesFromProject.ContainsKey(fileName))
                    {
                        if (FilesAreEqual(file, destFilePath))
                        {
                            if (!GenContext.Current.FailedMergePostActions.Any(g => g.FileName == fileName))
                            {
                                GenContext.Current.MergeFilesFromProject.Remove(fileName);
                                result.UnchangedFiles.Add(fileName);
                            }
                        }
                        else
                        {
                            result.ModifiedFiles.Add(fileName);
                        }
                    }
                    else
                    {
                        if (FilesAreEqual(file, destFilePath))
                        {
                            result.UnchangedFiles.Add(fileName);
                        }
                        else
                        {
                            result.ConflictingFiles.Add(fileName);
                        }
                    }
                }
                else
                {
                    result.NewFiles.Add(fileName);
                }
            }

            return result;
        }