@@ -63,12 +63,14 @@ static async Task AsyncMain(IConfigurationRoot config)
63
63
Console . WriteLine ( $ "Open pull requests ({ pullRequests . Count } ):") ;
64
64
foreach ( var pullRequest in pullRequests )
65
65
{
66
- var autoMerge =
67
- ( memberLogins . Contains ( pullRequest . Author ? . Login ) && ! pullRequest . Labels . Nodes . Any ( label => label . Name == gitHubConfig [ "excludeLabel" ] ) )
68
- || pullRequest . Labels . Nodes . Any ( label => label . Name == gitHubConfig [ "includeLabel" ] ) ;
66
+ var isMember = memberLogins . Contains ( pullRequest . Author ? . Login ) ;
67
+ var isIncluded = pullRequest . Labels . Nodes . Any ( label => label . Name == gitHubConfig [ "includeLabel" ] ) ;
68
+ var isExcluded = pullRequest . Labels . Nodes . Any ( label => label . Name == gitHubConfig [ "excludeLabel" ] ) ;
69
+ var autoMerge = ( isMember && ! isExcluded ) || isIncluded ;
69
70
Console . WriteLine ( $ " #{ pullRequest . Number } { pullRequest . Title } ") ;
70
71
Console . WriteLine ( $ " By: { pullRequest . Author ? . Login } ") ;
71
72
Console . WriteLine ( $ " Branch: { pullRequest . HeadRef ? . Name } ") ;
73
+ Console . WriteLine ( $ " Draft: { pullRequest . IsDraft } ") ;
72
74
Console . WriteLine ( $ " Labels: { String . Join ( ' ' , pullRequest . Labels . Nodes . Select ( label => label . Name ) ) } ") ;
73
75
Console . WriteLine ( $ " Allowed to auto-merge? { autoMerge } ") ;
74
76
if ( autoMerge )
@@ -77,6 +79,13 @@ static async Task AsyncMain(IConfigurationRoot config)
77
79
}
78
80
}
79
81
82
+ // Sort pull requests by draft status (non-draft first), inclusion label (present first), and number
83
+ autoMergePullRequests = autoMergePullRequests . OrderBy ( pullRequest =>
84
+ {
85
+ var isIncluded = pullRequest . Labels . Nodes . Any ( label => label . Name == gitHubConfig [ "includeLabel" ] ) ;
86
+ return $ "{ ( pullRequest . IsDraft ? "2" : "1" ) } { ( isIncluded ? "1" : "2" ) } { pullRequest . Number , 10 } ";
87
+ } ) . ToList ( ) ;
88
+
80
89
Console . WriteLine ( $ "Pull requests suitable for auto-merging ({ autoMergePullRequests . Count } ):") ;
81
90
foreach ( var pullRequest in autoMergePullRequests )
82
91
{
0 commit comments