aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/commentCodeGeneration.ts
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/commentCodeGeneration.ts')
-rw-r--r--.github/workflows/commentCodeGeneration.ts64
1 files changed, 41 insertions, 23 deletions
diff --git a/.github/workflows/commentCodeGeneration.ts b/.github/workflows/commentCodeGeneration.ts
index 96a520d1..2e8a115c 100644
--- a/.github/workflows/commentCodeGeneration.ts
+++ b/.github/workflows/commentCodeGeneration.ts
@@ -7,18 +7,34 @@ import type { context as ctx, GitHub } from '@actions/github/lib/utils';
* https://github.com/actions/github-script
*
* @param github A pre-authenticated octokit/rest.js client with pagination plugins
- * @param context An object containing the context of the workflow run
- * @param isSuccess A boolean indicating whether the workflow was successful
+ * @param context An object containing the context of the workflow run.
*/
export async function script(
github: InstanceType<typeof GitHub>,
- context: typeof ctx,
- isSuccess: boolean
+ context: typeof ctx
): Promise<void> {
+ const repoArgs = { owner: context.repo.owner, repo: context.repo.repo };
+
+ // Identify the PR that triggered the workflow
+ const head_branch: string = context.payload.workflow_run.head_branch;
+ const { data: prs } = await github.rest.pulls.list({
+ ...repoArgs,
+ state: 'open',
+ head: head_branch,
+ });
+
+ if (prs.length === 0) {
+ console.log(`No PRs found for branch ${head_branch}`);
+ return;
+ }
+
+ const pr_number = prs[0].number;
+
+ // Check if the PR already has a comment from the bot
+
const { data: comments } = await github.rest.issues.listComments({
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: context.issue.number,
+ ...repoArgs,
+ issue_number: pr_number,
});
const body = `GitHub Actions has found some problems running the preflight checks.
@@ -34,22 +50,24 @@ Please make sure to:
(comment) => comment.user?.type === 'Bot' && comment.body?.includes(body)
);
- if (isSuccess) {
- if (!botComment) return;
- await github.rest.issues.deleteComment({
- owner: context.repo.owner,
- repo: context.repo.repo,
- comment_id: botComment.id,
- });
- return;
- }
+ const isSuccess = context.payload.workflow_run.conclusion === 'success';
- if (!botComment) {
- await github.rest.issues.createComment({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- body,
- });
+ if (isSuccess) {
+ // Delete the bot comment if present
+ if (botComment != null) {
+ await github.rest.issues.deleteComment({
+ ...repoArgs,
+ comment_id: botComment.id,
+ });
+ }
+ } else {
+ // Create the comment if missing
+ if (botComment == null) {
+ await github.rest.issues.createComment({
+ ...repoArgs,
+ issue_number: pr_number,
+ body,
+ });
+ }
}
}