Loading src/tasks/remind.ts +31 −3 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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!`); Loading Loading @@ -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!`); Loading @@ -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}!`, ); } } Loading Loading
src/tasks/remind.ts +31 −3 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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!`); Loading Loading @@ -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!`); Loading @@ -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}!`, ); } } Loading