mirror of
https://github.com/denoland/deno.git
synced 2025-09-26 20:29:11 +00:00
Merge ea2b6707e9
into 328d5ef2a0
This commit is contained in:
commit
eaff79a54e
2 changed files with 80 additions and 0 deletions
25
.github/workflows/pull_request_labels.yaml
vendored
Normal file
25
.github/workflows/pull_request_labels.yaml
vendored
Normal 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 })
|
55
tools/label_pull_request.js
Normal file
55
tools/label_pull_request.js
Normal 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);
|
||||
}
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue