Skip to content

Commit 8898947

Browse files
authored
Check approvals before MR loop (#37)
1 parent 44de539 commit 8898947

File tree

2 files changed

+22
-10
lines changed

2 files changed

+22
-10
lines changed

src/MergeRequestAcceptor.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,16 @@ export const acceptMergeRequest = async (gitlabApi: GitlabApi, mergeRequest: Mer
151151
throw new Error(`Unexpected MR status: ${mergeRequestInfo.state}`);
152152
}
153153

154+
const approvals = await gitlabApi.getMergeRequestApprovals(mergeRequestInfo.project_id, mergeRequestInfo.iid);
155+
if (approvals.approvals_left > 0) {
156+
return {
157+
kind: AcceptMergeRequestResultKind.WaitingForApprovals,
158+
mergeRequestInfo,
159+
user,
160+
approvals,
161+
};
162+
}
163+
154164
if (mergeRequestInfo.rebase_in_progress) {
155165
console.log(`[MR][${mergeRequestInfo.iid}] Still rebasing`);
156166
await Promise.all(tasks);
@@ -276,16 +286,6 @@ export const acceptMergeRequest = async (gitlabApi: GitlabApi, mergeRequest: Mer
276286
}
277287
}
278288

279-
const approvals = await gitlabApi.getMergeRequestApprovals(mergeRequestInfo.project_id, mergeRequestInfo.iid);
280-
if (approvals.approvals_left > 0) {
281-
return {
282-
kind: AcceptMergeRequestResultKind.WaitingForApprovals,
283-
mergeRequestInfo,
284-
user,
285-
approvals,
286-
};
287-
}
288-
289289
console.log(`[MR][${mergeRequestInfo.iid}] Calling merge request`);
290290
const response = await gitlabApi.sendRawRequest(`/api/v4/projects/${mergeRequestInfo.project_id}/merge_requests/${mergeRequestInfo.iid}/merge`, RequestMethod.Put, {
291291
should_remove_source_branch: options.removeBranchAfterMerge,

src/index.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,18 @@ const runMergeRequestCheckerLoop = async (user: User) => {
163163
return;
164164
}
165165

166+
const approvals = await gitlabApi.getMergeRequestApprovals(mergeRequest.project_id, mergeRequest.iid);
167+
if (approvals.approvals_left > 0) {
168+
console.log(`[MR] Merge request is waiting for approvals, assigning back`);
169+
170+
await Promise.all([
171+
assignToAuthorAndResetLabels(gitlabApi, mergeRequest),
172+
sendNote(gitlabApi, mergeRequest, `Merge request is waiting for approvals. Required ${approvals.approvals_required}, but ${approvals.approvals_left} left.`),
173+
]);
174+
175+
return;
176+
}
177+
166178
const mergeRequestDiscussions = await gitlabApi.getMergeRequestDiscussions(mergeRequest.project_id, mergeRequest.iid);
167179
const unresolvedDiscussion = mergeRequestDiscussions.find((mergeRequestDiscussion: MergeRequestDiscussion) => {
168180
return mergeRequestDiscussion.notes.find((discussionNote: DiscussionNote) => (discussionNote.resolvable && !discussionNote.resolved)) !== undefined;

0 commit comments

Comments
 (0)