feat: adjust reminder for unfixed merge requests

This commit is contained in:
Karl-Philipp Wulfert
2019-02-25 17:30:41 +01:00
parent 5c6bdb98ad
commit e02939c470

View File

@@ -10,7 +10,7 @@ import {
import {WebClient} from '@slack/client';
import {asyncPool} from 'async-pool-native/dist/async-pool';
import {logger} from '../common';
import {GROUPS} from '../configuration';
import {GROUPS, NOTE_PREFIX} from '../configuration';
export async function remind(api: Api): Promise<void> {
// get list of open merge requests
@@ -47,6 +47,34 @@ export async function remind(api: Api): Promise<void> {
// get merge request approval
const approval = await api.getMergeRequestApproval(mergeRequest.project_id, mergeRequest.iid);
// get merge request discussions
const discussions = await api.getMergeRequestDiscussions(mergeRequest.project_id, mergeRequest.iid);
// check if at least one of the discussions is unresolved
const hasUnresolvedDiscussions = discussions.some((discussion) => {
return discussion.notes.some((note) => {
return note.resolvable && !note.resolved;
});
});
if (hasUnresolvedDiscussions) {
// send message to slack
await client.chat.postMessage({
channel: 'C762UG76Z',
text: `Merge request '${mergeRequest.title}' has unresolved discussions! See ${mergeRequest.web_url}!`,
});
// create note in merge request
await api.createNote(
mergeRequest.project_id,
Scope.MERGE_REQUESTS,
mergeRequest.iid,
`${NOTE_PREFIX} Please resolve pending discussions, @${mergeRequest.author.username}!`,
);
return;
}
if (approval.merge_status === MergeRequestMergeStatus.CAN_BE_MERGED) {
if (approval.approvals_left > 0) {
logger.warn(`Merge request '${mergeRequest.title}' needs more approvals!`);
@@ -76,7 +104,7 @@ export async function remind(api: Api): Promise<void> {
mergeRequest.project_id,
Scope.MERGE_REQUESTS,
mergeRequest.iid,
`Please review, ${possibleApprovers}!`,
`${NOTE_PREFIX} Please review, ${possibleApprovers}!`,
);
} else {
logger.log(`Merge request '${mergeRequest.title}' is ready to be merged!`);
@@ -97,7 +125,7 @@ export async function remind(api: Api): Promise<void> {
mergeRequest.project_id,
Scope.MERGE_REQUESTS,
mergeRequest.iid,
`Merge request is ready to be merged, ${possibleMergers}!`,
`${NOTE_PREFIX} Merge request is ready to be merged, ${possibleMergers}!`,
);
}
}