Skip to content

Commit

Permalink
fix(team-requested-reviewers): attempt to clean up getRequestedReview…
Browse files Browse the repository at this point in the history
…ersAsIndividuals
  • Loading branch information
mlg87 committed May 11, 2024
1 parent b57b6a9 commit 3970fdd
Show file tree
Hide file tree
Showing 13 changed files with 69 additions and 60 deletions.
8 changes: 4 additions & 4 deletions src/actions/createInitialMessage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@ import { fail } from "../utils/fail";
import { getPullRequest } from "../utils/getPullRequest";
import { logger } from "../utils/logger";
import { slackWebClient } from "../utils/slackWebClient";
import { getRequestedReviewersAsIndividuals } from "../utils/getRequestedReviewersAsIndividuals";

export const createInitialMessage = async (): Promise<string | void> => {
const verbose: boolean = core.getBooleanInput("verbose");
logger.info(`START createInitialMessage. Verbose? ${verbose}`)
logger.info(`START createInitialMessage. Verbose? ${verbose}`);

try {
const channelId = core.getInput("channel-id");
Expand All @@ -17,7 +18,6 @@ export const createInitialMessage = async (): Promise<string | void> => {

if (!pull_request || !repository) return;

const requestedReviewers = pull_request.requested_reviewers ? pull_request.requested_reviewers.map((user: any) => user.login) : [];
const requestedReviewers = await getRequestedReviewersAsIndividuals();

//
Expand Down Expand Up @@ -63,10 +63,10 @@ export const createInitialMessage = async (): Promise<string | void> => {
owner: repository.owner.login,
repo: repository.name,
issue_number: pull_request.number,
body: slackMessageId
body: slackMessageId,
});

logger.info(`END createInitialMessage: ${slackMessageId}`)
logger.info(`END createInitialMessage: ${slackMessageId}`);
return slackMessageId;
} catch (error: any) {
console.error("error in createInitialMessage::: ", error);
Expand Down
8 changes: 5 additions & 3 deletions src/actions/handleCommitPush.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { slackWebClient } from "../utils/slackWebClient";
// NOTE in the future we may want to wait to notify everyone that they can review it again when the PR author
// explicitly asks for a re-review
export const handleCommitPush = async (): Promise<void> => {
logger.info('START handleCommitPush')
logger.info("START handleCommitPush");
try {
const channelId = core.getInput("channel-id");
const { repository } = github.context.payload;
Expand Down Expand Up @@ -56,7 +56,9 @@ export const handleCommitPush = async (): Promise<void> => {
const previousReviewers = res.data.map((review) => review!.user!.login);
const distinctPreviousReviewers = [...new Set(previousReviewers)];
const baseMessage = `new code has been committed since your review of <${pull_request._links.html.href}|*PR ${pull_request.number}*>, please review the updates.`;
const usersToAtString = await createUsersToAtString(distinctPreviousReviewers);
const usersToAtString = await createUsersToAtString(
distinctPreviousReviewers
);
const text = `${usersToAtString} ${baseMessage}`;
const threadUpdateRes = await slackWebClient.chat.postMessage({
channel: channelId,
Expand All @@ -78,7 +80,7 @@ export const handleCommitPush = async (): Promise<void> => {
}
}

logger.info('END handleCommitPush')
logger.info("END handleCommitPush");
return;
} catch (error) {
fail(error);
Expand Down
4 changes: 2 additions & 2 deletions src/actions/handleLabelChange.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { slackWebClient } from "../utils/slackWebClient";

// TODO handle labels being removed
export const handleLabelChange = async (): Promise<void> => {
logger.info('START handleLableChange')
logger.info("START handleLableChange");
try {
const channelId = core.getInput("channel-id");
const labelNameToWatchFor = core.getInput("label-name-to-watch-for");
Expand Down Expand Up @@ -67,7 +67,7 @@ export const handleLabelChange = async (): Promise<void> => {
name: "heart_eyes",
});

logger.info('END handleLableChange')
logger.info("END handleLableChange");
return;
} catch (error) {
fail(error);
Expand Down
4 changes: 2 additions & 2 deletions src/actions/handleMerge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { slackWebClient } from "../utils/slackWebClient";
// will only run on push to base branch (i.e. staging), so we can assume that a closed state for PR
// equates to 'merged' (no specific event for 'merged' on PRs)
export const handleMerge = async (): Promise<void> => {
logger.info('START handleMerge')
logger.info("START handleMerge");
try {
const channelId = core.getInput("channel-id");
const { commits, repository } = github.context.payload;
Expand Down Expand Up @@ -55,7 +55,7 @@ export const handleMerge = async (): Promise<void> => {
text,
});

logger.info('END handleMerge')
logger.info("END handleMerge");
return;
} catch (error) {
fail(error);
Expand Down
8 changes: 4 additions & 4 deletions src/actions/handlePullRequestReview.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ const reactionMap = {
};

export const handlePullRequestReview = async (): Promise<void> => {
logger.info('START handlePullRequestReview')
logger.info("START handlePullRequestReview");
try {
const channelId = core.getInput("channel-id");
const slackUsers = await getEngineersFromS3();
Expand Down Expand Up @@ -119,7 +119,7 @@ export const handlePullRequestReview = async (): Promise<void> => {
}

if (hasReaction) {
logger.info('END handlePullRequestReview: hasReaction')
logger.info("END handlePullRequestReview: hasReaction");
return;
}

Expand All @@ -130,8 +130,8 @@ export const handlePullRequestReview = async (): Promise<void> => {
name: reactionToAdd,
});

logger.info('END handlePullRequestReview: new reactions added')
return
logger.info("END handlePullRequestReview: new reactions added");
return;
} catch (error) {
fail(error);
throw error;
Expand Down
2 changes: 1 addition & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { handlePullRequestReview } from "./actions/handlePullRequestReview";
import { logger } from "./utils/logger";

const run = async (): Promise<void> => {
logger.info(`START run (github.context): ${JSON.stringify(github.context)}`)
logger.info(`START run (github.context): ${JSON.stringify(github.context)}`);
const { eventName, payload, ref } = github.context;
const baseBranch = core.getInput("base-branch");
const isActingOnBaseBranch = ref.includes(baseBranch);
Expand Down
4 changes: 2 additions & 2 deletions src/utils/createUsersToAtString.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { logger } from "./logger";
export const createUsersToAtString = async (
reviewers: string[]
): Promise<string> => {
logger.info('START createUsersToAtString')
logger.info("START createUsersToAtString");
let engineers: EngineerGithubSlackMapping[] = [];
try {
const res = await getEngineersFromS3();
Expand All @@ -31,6 +31,6 @@ export const createUsersToAtString = async (
return;
});

logger.info(`END createUsersToAtString: ${JSON.stringify(usersToAtString)}`)
logger.info(`END createUsersToAtString: ${JSON.stringify(usersToAtString)}`);
return usersToAtString;
};
2 changes: 1 addition & 1 deletion src/utils/fail.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { logger } from "./logger";

export const fail = (error: any) => {
const failSilently = core.getInput("fail-silently");
logger.error(JSON.stringify(error))
logger.error(JSON.stringify(error));
if (failSilently === "true") {
core.warning(error.message ?? "Oops");
} else {
Expand Down
2 changes: 1 addition & 1 deletion src/utils/getEngineersFromS3/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export const getEngineersFromS3 = (): Promise<{
engineers: EngineerGithubSlackMapping[];
}> => {
return new Promise(async (resolve, reject) => {
logger.info('START getEngineersFromS3')
logger.info("START getEngineersFromS3");
// required for this to work
const Bucket = core.getInput("aws-s3-bucket");
const Key = core.getInput("aws-s3-object-key");
Expand Down
23 changes: 13 additions & 10 deletions src/utils/getPullRequest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,26 @@ import * as github from "@actions/github";
import { fail } from "./fail";
import { logger } from "./logger";


export const getPullRequest = async () => {
logger.info('START getPullRequest')
logger.info("START getPullRequest");
try {
const ghToken = core.getInput("github-token");
const octokit = github.getOctokit(ghToken);
const { commits, pull_request: prFromContext, repository } = github.context.payload;
const {
commits,
pull_request: prFromContext,
repository,
} = github.context.payload;

if (prFromContext) {
logger.info(`using PR from context: ${JSON.stringify(prFromContext)}`)
logger.info(`using PR from context: ${JSON.stringify(prFromContext)}`);
const { data } = await octokit.rest.pulls.get({
owner: github.context.payload.repository?.owner.login || '',
repo: repository?.name || '',
pull_number: prFromContext.number
})
owner: github.context.payload.repository?.owner.login || "",
repo: repository?.name || "",
pull_number: prFromContext.number,
});
return data;
}
}

if (!commits || !commits.length) {
throw Error("No commits found");
Expand All @@ -43,7 +46,7 @@ export const getPullRequest = async () => {
throw Error(`No pull_request found for commit: ${commit_sha}`);
}

logger.info(`END getPullRequest: ${JSON.stringify(pull_request)}`)
logger.info(`END getPullRequest: ${JSON.stringify(pull_request)}`);
return pull_request;
} catch (error) {
fail(error);
Expand Down
31 changes: 17 additions & 14 deletions src/utils/getRequestedReviewersAsIndividuals.ts
Original file line number Diff line number Diff line change
@@ -1,35 +1,38 @@
import * as core from "@actions/core";
import * as github from "@actions/github";
import cache from 'memory-cache';

import { fail } from "./fail";
import { getPullRequest } from "./getPullRequest";
import { logger } from "./logger";

const CACHE_KEY = 'REVIEWERS';

export const getRequestedReviewersAsIndividuals = async () => {
logger.info('START getRequestedReviewersAsIndividuals')
logger.info("START getRequestedReviewersAsIndividuals");
try {
const ghToken = core.getInput('github-token')
const ghToken = core.getInput("github-token");
const octokit = github.getOctokit(ghToken);
const pr = await getPullRequest();
const requestedReviewers = pr.requested_reviewers ?? [];
const requestedTeams = pr.requested_teams ?? [];
const users = requestedReviewers ? requestedReviewers.map((user) => user.login) : [];
const users = requestedReviewers
? requestedReviewers.map((user) => user.login)
: [];
if (requestedTeams && requestedTeams.length) {
for (const requestedTeam in requestedTeams) {
// TODO probably want to do this a better way
const org = (requestedTeam as any).html_url
const org = (requestedTeam as any).html_url;
const teamMembers = await octokit.rest.teams.listMembersInOrg({
org: github.context.payload.repository.or
})
org,
team_slug: requestedTeam,
});
teamMembers.data.forEach((member) => {
users.push(member.login);
});
}
}


logger.info(`END getRequestedReviewersAsIndividuals: ${JSON.stringify(pull_request)}`)
return pull_request;

logger.info(
`END getRequestedReviewersAsIndividuals: ${JSON.stringify(users)}`
);
return users;
} catch (error) {
fail(error);
throw error;
Expand Down
10 changes: 6 additions & 4 deletions src/utils/getSlackMessageId.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ import { createInitialMessage } from "../actions/createInitialMessage";

// requires pull_request and repository as inputs bc of the differently shaped action payloads
export const getSlackMessageId = async (): Promise<string> => {
logger.info('START getSlackMessageId')
logger.info("START getSlackMessageId");
try {
const { repository } = github.context.payload;
let pull_request: any = github.context.payload.pull_request;
// pull_request is not on the payload for push events
if (github.context.eventName === 'push' && !pull_request) {
if (github.context.eventName === "push" && !pull_request) {
pull_request = await getPullRequest();
}
if (!pull_request) {
Expand Down Expand Up @@ -43,7 +43,9 @@ export const getSlackMessageId = async (): Promise<string> => {
});

if (!slackMessageId) {
logger.info('no SLACK_MESSAGE_ID found, attempting to create initial message')
logger.info(
"no SLACK_MESSAGE_ID found, attempting to create initial message"
);
slackMessageId = await createInitialMessage();

if (!slackMessageId) {
Expand All @@ -53,7 +55,7 @@ export const getSlackMessageId = async (): Promise<string> => {
}
}

logger.info(`END getSlackMessageId: ${slackMessageId}`)
logger.info(`END getSlackMessageId: ${slackMessageId}`);
return slackMessageId;
} catch (error) {
fail(error);
Expand Down
23 changes: 11 additions & 12 deletions src/utils/logger.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import formatISO from 'date-fns/formatISO';
import winston from 'winston';

import formatISO from "date-fns/formatISO";
import winston from "winston";

const alignColorsAndTime = winston.format.combine(
winston.format.colorize({
Expand All @@ -10,7 +9,7 @@ const alignColorsAndTime = winston.format.combine(
label: `[PR-REVIEWER-SLACK-NOTIFY-ACTION]`,
}),
winston.format.timestamp({
format: 'YYYY-MM-DD HH:MM:SS',
format: "YYYY-MM-DD HH:MM:SS",
}),
winston.format.printf(
(info) =>
Expand All @@ -35,17 +34,17 @@ log levels
*/

winston.addColors({
info: 'bold cyan', // fontStyle color
warn: 'italic yellow',
error: 'red',
debug: 'green',
crit: 'bold red',
info: "bold cyan", // fontStyle color
warn: "italic yellow",
error: "red",
debug: "green",
crit: "bold red",
});

export const logger = winston.createLogger({
level: 'info',
level: "info",
defaultMeta: {
service: 'pr-reviewer-slack-notify-action',
service: "pr-reviewer-slack-notify-action",
},
transports: [
new winston.transports.Console({
Expand All @@ -56,4 +55,4 @@ export const logger = winston.createLogger({
),
}),
],
});
});

0 comments on commit 3970fdd

Please sign in to comment.