diff --git a/src/comment.ts b/src/comment.ts new file mode 100644 index 0000000..78504db --- /dev/null +++ b/src/comment.ts @@ -0,0 +1,21 @@ +export async function findPreviousComment(octokit, repo, issue_number) { + const { data: comments } = await octokit.issues.listComments({ + ...repo, + issue_number + }); + return comments.find(comment => comment.user.login === "github-actions[bot]"); +} +export async function updateComment(octokit, repo, comment_id, body) { + await octokit.issues.updateComment({ + ...repo, + comment_id, + body + }); +} +export async function createComment(octokit, repo, issue_number, body) { + await octokit.issues.createComment({ + ...repo, + issue_number, + body + }); +} diff --git a/src/main.ts b/src/main.ts index 9172e53..7e6d160 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,40 +1,26 @@ import * as core from "@actions/core"; import { context, GitHub } from "@actions/github"; - +import { findPreviousComment, createComment, updateComment } from "./comment"; async function run() { try { const repo = context.repo; - const issue_number = context?.payload?.pull_request?.number; - if (!issue_number) { + const number = context?.payload?.pull_request?.number; + const body = core.getInput("message"); + const githubToken = core.getInput("GITHUB_TOKEN"); + if (!number) { core.setFailed("This action only works for pull_request"); return; } - const body = core.getInput("message"); - const githubToken = core.getInput("GITHUB_TOKEN"); if (!body || !githubToken) { core.setFailed("invalid input: please check your workflow"); return; } const octokit = new GitHub(githubToken); - const { data: comments } = await octokit.issues.listComments({ - ...repo, - issue_number - }); - const myComment = comments.find( - comment => comment.user.login === "github-actions[bot]" - ); - if (myComment) { - await octokit.issues.updateComment({ - ...repo, - comment_id: myComment.id, - body - }); + const previous = await findPreviousComment(octokit, repo, number); + if (previous) { + await updateComment(octokit, repo, previous.id, body); } else { - await octokit.issues.createComment({ - ...repo, - issue_number, - body - }); + await createComment(octokit, repo, number, body); } } catch ({ message }) { core.setFailed(message);