This commit is contained in:
Bartek Iwańczuk 2025-09-19 00:11:50 +02:00 committed by GitHub
commit eaff79a54e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 80 additions and 0 deletions

View file

@ -0,0 +1,25 @@
name: Add labels to pull requests
on:
pull_request_target:
types: [
opened,
reopened,
review_requested,
]
pull_request_review:
types: [submitted, edited, dismissed]
jobs:
pull_request_labels:
runs-on: ubuntu-22.04
if: github.repository == 'denoland/deno'
steps:
- uses: actions/checkout@v4
- name: Label pull request
uses: actions/github-script@v7
with:
script: |
require('./tools/label_pull_request.js')({ context, github })

View file

@ -0,0 +1,55 @@
// Copyright 2018-2025 the Deno authors. MIT license.
// deno-lint-ignore-file no-console camelcase
async function createComment(context, github) {
await github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `Thanks for the PR!
Once you are done, please request a review from a Deno team member.`,
});
}
async function updateLabels(context, github) {
const result = await github.rest.issues
.listLabelsOnIssue({
issue_number: context.payload.pull_request.number,
owner: context.repo.owner,
repo: context.repo.repo,
});
const labelNames = result.data.map((label) => label.name);
labelNames.push("pr:needs-review");
return github.rest.issues.setLabels({
issue_number: context.payload.pull_request.number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: labelNames,
});
}
// TODO(bartlomieju): figure out how to use ES modules in GH Actions scripts
module.exports = async ({ context, github }) => {
const eventHandlers = {
opened: createComment,
reopened: createComment,
review_requested: updateLabels,
};
const eventName = context.payload.action;
const eventHandler = eventHandlers[eventName];
if (!eventHandler) {
console.log(`::warning::'${eventName}' event has no handler, skipping.`);
return;
}
try {
await eventHandler(context, github);
} catch (error) {
console.log("::warning::Error, during update, bailing out: ", error);
}
};