Commit e02939c4 authored by krlwlfrt's avatar krlwlfrt
Browse files

feat: adjust reminder for unfixed merge requests

parent 5c6bdb98
Loading
Loading
Loading
Loading
Loading
+31 −3
Original line number Diff line number Diff line
@@ -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}!`,
        );
      }
    }