Skip to content

Commit 42d7c20

Browse files
authored
Merge pull request #258 from lcdsmao/feat-requiredAllReviewRequestsResolved
feat: required all review requests resolved
2 parents 0662571 + 0f1a319 commit 42d7c20

File tree

6 files changed

+17
-6
lines changed

6 files changed

+17
-6
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ jobs:
5353
requiredLabels: auto-merge
5454
# Required at least 2 approves (default: 0)
5555
requiredApprovals: 2
56+
# Required approvals from all requested reviewers
57+
allRequestedReviewersMustApprove: true
5658
# Required these status checks success
5759
requiredStatusChecks: |
5860
build_pr

action.yml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,22 @@ inputs:
1414
default: 'MERGE'
1515
requiredLabels:
1616
required: false
17-
description: 'Labels need to be present for a pull request.'
17+
description: 'Labels must be present before merging.'
1818
requiredApprovals:
1919
required: false
20-
description: 'Count of required approval'
20+
description: 'Count of approvals must be this number before merging.'
2121
default: '0'
22+
allRequestedReviewersMustApprove:
23+
required: false
24+
description: 'Must get approvals from all requested reviewers before merging.'
25+
default: 'true'
2226
requiredStatusChecks:
2327
required: false
24-
description: 'Multiple status checks required to be success'
28+
description: 'Multiple status checks required to be success.'
2529
default: ''
2630
protectedBranchNamePattern:
2731
required: false
28-
description: 'The name pattern of the base branch that your pull request wants to merge into. Branch protection rule with the same name pattern must be existed. If not set, the default behavior is to find the name pattern of main or master.'
32+
description: 'The name pattern of GitHub branch protection rules to apply. The default behavior is to find the name pattern of main or master. Require personal access token to let this feature work.'
2933
default: ''
3034
runs:
3135
using: 'node12'

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "update-branch",
3-
"version": "3.1.4",
3+
"version": "3.1.5",
44
"private": true,
55
"description": "Merge your pull request in order.",
66
"main": "lib/main.js",

src/main.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ async function run(): Promise<void> {
2929
.split('\n')
3030
.filter(s => s !== '')
3131
const requiredApprovals = parseInt(core.getInput('requiredApprovals'))
32+
const allRequestedReviewersMustApprove =
33+
core.getInput('allRequestedReviewersMustApprove') === 'true'
3234
const requiredStatusChecks = core
3335
.getInput('requiredStatusChecks')
3436
.split('\n')
@@ -51,6 +53,7 @@ async function run(): Promise<void> {
5153
requiredApprovals:
5254
requiredApprovals ||
5355
(branchProtectionRule?.requiredApprovingReviewCount ?? 0),
56+
allRequestedReviewersMustApprove,
5457
requiredStatusChecks: [
5558
...requiredStatusChecks,
5659
...(branchProtectionRule?.requiredStatusCheckContexts ?? [])

src/type.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export interface Condition {
1111
branchNamePattern?: string
1212
requiredApprovals: number
1313
requiredStatusChecks: string[]
14+
allRequestedReviewersMustApprove: boolean
1415
requiredLabels: string[]
1516
}
1617

src/utils.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ function isSatisfyBasicConditionPr(
3737
!pr.merged &&
3838
pr.mergeable === 'MERGEABLE' &&
3939
pr.reviews.totalCount >= condition.requiredApprovals &&
40-
pr.reviewRequests.totalCount === 0 &&
40+
(pr.reviewRequests.totalCount === 0 ||
41+
!condition.allRequestedReviewersMustApprove) &&
4142
hasLabels(pr, condition) &&
4243
minimatch(pr.baseRefName, condition.branchNamePattern ?? '*')
4344
)

0 commit comments

Comments
 (0)