示例#1
0
        private async Task PostDiscardedCommitCommentAsync(
            GitHubProject baseProject,
            GitHubPullRequest pullRequestToUpdate,
            GitCommit oldCommit,
            IGitHubClient client)
        {
            GitHubCombinedStatus combinedStatus = await client.GetStatusAsync(
                baseProject,
                oldCommit.Sha);

            CiStatusLine[] statuses = combinedStatus
                                      .Statuses
                                      .OrderBy(s => s.State)
                                      .ThenBy(s => s.Context)
                                      .Select(CiStatusLine.Create)
                                      .ToArray();

            string statusLines = statuses
                                 .Aggregate(string.Empty, (acc, line) => acc + line.MarkdownLine + "\r\n");

            string ciSummary = string.Join(
                " ",
                statuses
                .GroupBy(s => s.Emoticon)
                .Select(g => $"{g.Count()}{g.Key}")
                .ToArray());

            string commentBody =
                $"Discarded [`{oldCommit.Sha.Substring(0, 7)}`]({oldCommit.HtmlUrl}): " +
                $"`{oldCommit.Message}`";

            if (statuses.Any())
            {
                commentBody += "\r\n\r\n" +
                               "<details>" +
                               "<summary>" +
                               $"CI Status: {ciSummary} (click to expand)\r\n" +
                               "</summary>" +
                               $"\r\n\r\n{statusLines}\r\n" +
                               "</details>";
            }

            await client.PostCommentAsync(
                baseProject,
                pullRequestToUpdate.Number,
                commentBody);
        }
示例#2
0
 protected override Task <IssueStatus> GetStatusAsync()
 {
     return(_client.GetStatusAsync(Organization, Repo, Issue));
 }