Skip to content

Commit 359e8aa

Browse files
committed
feat: Calculate which PRs are auto-merge okay and list them
1 parent 623ec73 commit 359e8aa

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

Program.cs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections.Generic;
23
using System.IO;
34
using System.Linq;
45
using System.Threading.Tasks;
@@ -43,20 +44,35 @@ static async Task AsyncMain(IConfigurationRoot config)
4344
var query = new Query(gitHubConfig["token"]);
4445

4546
var members = await query.GetTeamMembers(gitHubConfig["organization"], gitHubConfig["team"]);
46-
Console.WriteLine($"Org '{gitHubConfig["organization"]}' team '{gitHubConfig["team"]}' members");
47+
Console.WriteLine($"Org '{gitHubConfig["organization"]}' team '{gitHubConfig["team"]}' members ({members.Count})");
4748
foreach (var member in members)
4849
{
4950
Console.WriteLine($" {member.Login}");
5051
}
52+
var memberLogins = members.Select(member => member.Login).ToHashSet();
5153

5254
var pullRequests = await query.GetOpenPullRequests(gitHubConfig["organization"], gitHubConfig["repository"]);
53-
Console.WriteLine($"Org '{gitHubConfig["organization"]}' repo '{gitHubConfig["repository"]}' open pull requests");
55+
var autoMergePullRequests = new List<GraphPullRequest>();
56+
Console.WriteLine($"Org '{gitHubConfig["organization"]}' repo '{gitHubConfig["repository"]}' open pull requests ({pullRequests.Count})");
5457
foreach (var pullRequest in pullRequests)
5558
{
59+
var autoMerge = memberLogins.Contains(pullRequest.Author.Login)
60+
&& !pullRequest.Labels.Nodes.Any(label => label.Name == gitHubConfig["excludeLabel"]);
5661
Console.WriteLine($" #{pullRequest.Number} {pullRequest.Title}");
5762
Console.WriteLine($" By: {pullRequest.Author.Login}");
5863
Console.WriteLine($" Branch: {pullRequest.HeadRef.Name}");
5964
Console.WriteLine($" Labels: {String.Join(' ', pullRequest.Labels.Nodes.Select(label => label.Name))}");
65+
Console.WriteLine($" Allowed to auto-merge? {autoMerge}");
66+
if (autoMerge)
67+
{
68+
autoMergePullRequests.Add(pullRequest);
69+
}
70+
}
71+
72+
Console.WriteLine($"Org '{gitHubConfig["organization"]}' repo '{gitHubConfig["repository"]}' auto-merge pull requests ({autoMergePullRequests.Count})");
73+
foreach (var pullRequest in autoMergePullRequests)
74+
{
75+
Console.WriteLine($" #{pullRequest.Number} {pullRequest.Title}");
6076
}
6177
}
6278
}

0 commit comments

Comments
 (0)