chore(vendor): import pi 1.3.0
Imported as a linear vendor commit so forge rebases do not replay the upstream root tree. git-subtree-dir: third_party/pi git-subtree-split: 71023aec1546d6d677a65669c5665c0927ce0dd0
This commit is contained in:
@@ -19,6 +19,12 @@ jobs:
|
||||
const LAST_READ_LABEL = 'last-read';
|
||||
const TO_DISCUSS_LABEL = 'to-discuss';
|
||||
const INPROGRESS_LABEL = 'inprogress';
|
||||
// Applying one of these labels assigns the user and reopens the issue if it is closed.
|
||||
const LABEL_ASSIGNEES = new Map([
|
||||
['mcp', 'mitsuhiko'],
|
||||
['codemode', 'mitsuhiko'],
|
||||
['durable', 'badlogic'],
|
||||
]);
|
||||
|
||||
function issueHasLabel(issue, labelName) {
|
||||
return (issue.labels ?? []).some((label) => label.name === labelName);
|
||||
@@ -47,9 +53,13 @@ jobs:
|
||||
}
|
||||
}
|
||||
|
||||
async function removeClosedStateLabels(issueNumber, issue) {
|
||||
await removeLabelIfPresent(issueNumber, issue, UNTRIAGED_LABEL);
|
||||
await removeLabelIfPresent(issueNumber, issue, NO_ACTION_LABEL);
|
||||
}
|
||||
|
||||
if (context.payload.action === 'reopened') {
|
||||
await removeLabelIfPresent(context.issue.number, context.payload.issue, UNTRIAGED_LABEL);
|
||||
await removeLabelIfPresent(context.issue.number, context.payload.issue, NO_ACTION_LABEL);
|
||||
await removeClosedStateLabels(context.issue.number, context.payload.issue);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -58,6 +68,32 @@ jobs:
|
||||
return;
|
||||
}
|
||||
|
||||
const labelAssignee =
|
||||
context.payload.action === 'labeled' ? LABEL_ASSIGNEES.get(context.payload.label?.name) : undefined;
|
||||
if (labelAssignee) {
|
||||
const issueNumber = context.issue.number;
|
||||
await github.rest.issues.addAssignees({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: issueNumber,
|
||||
assignees: [labelAssignee],
|
||||
});
|
||||
console.log(`Assigned ${labelAssignee} to #${issueNumber}`);
|
||||
|
||||
if (context.payload.issue.state === 'closed') {
|
||||
await github.rest.issues.update({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: issueNumber,
|
||||
state: 'open',
|
||||
});
|
||||
console.log(`Reopened #${issueNumber}`);
|
||||
// Reopening with the workflow token does not trigger the reopened handler above.
|
||||
await removeClosedStateLabels(issueNumber, context.payload.issue);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (context.payload.action !== 'labeled' || context.payload.label?.name !== LAST_READ_LABEL) {
|
||||
console.log('Not a last-read label event');
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user