mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-12 07:20:45 +00:00
Add too-many-prs override label handling
This commit is contained in:
6
.github/workflows/auto-response.yml
vendored
6
.github/workflows/auto-response.yml
vendored
@@ -261,6 +261,8 @@ jobs:
|
|||||||
};
|
};
|
||||||
|
|
||||||
const triggerLabel = "trigger-response";
|
const triggerLabel = "trigger-response";
|
||||||
|
const activePrLimitLabel = "r: too-many-prs";
|
||||||
|
const activePrLimitOverrideLabel = "r: too-many-prs-override";
|
||||||
const target = context.payload.issue ?? context.payload.pull_request;
|
const target = context.payload.issue ?? context.payload.pull_request;
|
||||||
if (!target) {
|
if (!target) {
|
||||||
return;
|
return;
|
||||||
@@ -448,6 +450,10 @@ jobs:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pullRequest && labelSet.has(activePrLimitOverrideLabel)) {
|
||||||
|
labelSet.delete(activePrLimitLabel);
|
||||||
|
}
|
||||||
|
|
||||||
const rule = rules.find((item) => labelSet.has(item.label));
|
const rule = rules.find((item) => labelSet.has(item.label));
|
||||||
if (!rule) {
|
if (!rule) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
28
.github/workflows/labeler.yml
vendored
28
.github/workflows/labeler.yml
vendored
@@ -213,6 +213,7 @@ jobs:
|
|||||||
}
|
}
|
||||||
|
|
||||||
const activePrLimitLabel = "r: too-many-prs";
|
const activePrLimitLabel = "r: too-many-prs";
|
||||||
|
const activePrLimitOverrideLabel = "r: too-many-prs-override";
|
||||||
const activePrLimit = 10;
|
const activePrLimit = 10;
|
||||||
const labelColor = "B60205";
|
const labelColor = "B60205";
|
||||||
const labelDescription = `Author has more than ${activePrLimit} active PRs in this repo`;
|
const labelDescription = `Author has more than ${activePrLimit} active PRs in this repo`;
|
||||||
@@ -221,12 +222,37 @@ jobs:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const currentLabels = await github.paginate(github.rest.issues.listLabelsOnIssue, {
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
issue_number: pullRequest.number,
|
||||||
|
per_page: 100,
|
||||||
|
});
|
||||||
|
|
||||||
const labelNames = new Set(
|
const labelNames = new Set(
|
||||||
(pullRequest.labels ?? [])
|
currentLabels
|
||||||
.map((label) => (typeof label === "string" ? label : label?.name))
|
.map((label) => (typeof label === "string" ? label : label?.name))
|
||||||
.filter((name) => typeof name === "string"),
|
.filter((name) => typeof name === "string"),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (labelNames.has(activePrLimitOverrideLabel)) {
|
||||||
|
if (labelNames.has(activePrLimitLabel)) {
|
||||||
|
try {
|
||||||
|
await github.rest.issues.removeLabel({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
issue_number: pullRequest.number,
|
||||||
|
name: activePrLimitLabel,
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
if (error?.status !== 404) {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const ensureLabelExists = async () => {
|
const ensureLabelExists = async () => {
|
||||||
try {
|
try {
|
||||||
await github.rest.issues.getLabel({
|
await github.rest.issues.getLabel({
|
||||||
|
|||||||
Reference in New Issue
Block a user