Beispiel #1
0
        async Task <RepositoryUpdatesFormatted> IModelValidationService.GetRepositoryUpdates(long repoId, int pullRequestId, OutputFormat outputFormat)
        {
            IEnumerable <PullRequestFile> allFiles = await gitClient.PullRequest.Files(repoId, pullRequestId);

            var repoUpdates = new RepositoryUpdates
            {
                FilesAdded         = new List <string>(),
                FilesModified      = new List <string>(),
                FilesRemoved       = new List <string>(),
                FilesRenamed       = new List <string>(),
                FilesAddedModified = new List <string>(),
                FilesAll           = new List <string>()
            };

            foreach (PullRequestFile file in allFiles)
            {
                if (outputFormat == OutputFormat.space_delimited && file.FileName.Contains(" "))
                {
                    throw new Exception("One of your files includes a space. Consider using a different output format or removing spaces from your filenames. Please submit an issue on this action's GitHub repo.");
                }

                repoUpdates.FilesAll.Add(file.FileName);

                FileChangeStatus fileStatus = (FileChangeStatus)System.Enum.Parse(typeof(FileChangeStatus), file.Status);

                switch (fileStatus)
                {
                case FileChangeStatus.added:
                    repoUpdates.FilesAdded.Add(file.FileName);
                    repoUpdates.FilesAddedModified.Add(file.FileName);
                    break;

                case FileChangeStatus.modified:
                    repoUpdates.FilesModified.Add(file.FileName);
                    repoUpdates.FilesAddedModified.Add(file.FileName);
                    break;

                case FileChangeStatus.removed:
                    repoUpdates.FilesRemoved.Add(file.FileName);
                    break;

                case FileChangeStatus.renamed:
                    repoUpdates.FilesRenamed.Add(file.FileName);
                    break;

                case FileChangeStatus.none:
                    continue;

                default:
                    throw new Exception("Invalid file status");
                }
            }

            var formattedRepoUpdates = FormatRepositoryUpdates(repoUpdates, outputFormat);

            return(formattedRepoUpdates);
        }
Beispiel #2
0
        private RepositoryUpdatesFormatted FormatRepositoryUpdates(RepositoryUpdates repoUpdates, OutputFormat outputFormat)
        {
            switch (outputFormat)
            {
            case OutputFormat.space_delimited:
                return(new RepositoryUpdatesFormatted
                {
                    FilesAddedFormatted = string.Join(' ', repoUpdates.FilesAdded),
                    FilesModifiedFormatted = string.Join(' ', repoUpdates.FilesModified),
                    FilesAddedModifiedFormatted = string.Join(' ', repoUpdates.FilesAddedModified),
                    FilesRemovedFormatted = string.Join(' ', repoUpdates.FilesRemoved),
                    FilesRenamedFormatted = string.Join(' ', repoUpdates.FilesRenamed),
                    FilesAllFormatted = string.Join(' ', repoUpdates.FilesAll)
                });

            case OutputFormat.csv:
                return(new RepositoryUpdatesFormatted
                {
                    FilesAddedFormatted = string.Join(',', repoUpdates.FilesAdded),
                    FilesModifiedFormatted = string.Join(',', repoUpdates.FilesModified),
                    FilesAddedModifiedFormatted = string.Join(',', repoUpdates.FilesAddedModified),
                    FilesRemovedFormatted = string.Join(',', repoUpdates.FilesRemoved),
                    FilesRenamedFormatted = string.Join(',', repoUpdates.FilesRenamed),
                    FilesAllFormatted = string.Join(',', repoUpdates.FilesAll)
                });

            case OutputFormat.json:
                return(new RepositoryUpdatesFormatted
                {
                    FilesAddedFormatted = JsonConvert.SerializeObject(repoUpdates.FilesAdded),
                    FilesModifiedFormatted = JsonConvert.SerializeObject(repoUpdates.FilesModified),
                    FilesAddedModifiedFormatted = JsonConvert.SerializeObject(repoUpdates.FilesAddedModified),
                    FilesRemovedFormatted = JsonConvert.SerializeObject(repoUpdates.FilesRemoved),
                    FilesRenamedFormatted = JsonConvert.SerializeObject(repoUpdates.FilesRenamed),
                    FilesAllFormatted = JsonConvert.SerializeObject(repoUpdates.FilesAll)
                });

            default:
                throw new Exception("Invalid output format");
            }
        }