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.ts48
1 files changed, 48 insertions, 0 deletions
diff --git a/.github/workflows/commentCodeGeneration.ts b/.github/workflows/commentCodeGeneration.ts
new file mode 100644
index 00000000..715854cd
--- /dev/null
+++ b/.github/workflows/commentCodeGeneration.ts
@@ -0,0 +1,48 @@
+import type { context as ctx, GitHub } from '@actions/github/lib/utils';
+
+/**
+ * Notifies the PR about uncommitted changes generated by the `generate:*` commands.
+ *
+ * This script is used by github-script
+ * 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
+ */
+module.exports = async (
+ github: InstanceType<typeof GitHub>,
+ context: typeof ctx,
+ isSuccess: boolean
+) => {
+ const { data: comments } = await github.rest.issues.listComments({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ issue_number: context.issue.number,
+ });
+
+ const body = `Uncommitted changes were detected after runnning <code>generate:*</code> commands.\nPlease run <code>pnpm run generate:locales</code> and <code>pnpm run generate:api-docs</code> to generate/update the related files, and commit them.`;
+
+ const botComment = comments.find(
+ (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;
+ }
+
+ if (!botComment) {
+ await github.rest.issues.createComment({
+ issue_number: context.issue.number,
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ body,
+ });
+ }
+};