mirror of
https://github.com/we-promise/sure.git
synced 2026-05-24 21:14:56 +00:00
Add PR workflow for not-gittensor labeling (#1957)
This commit is contained in:
60
.github/workflows/label-not-gittensor.yml
vendored
Normal file
60
.github/workflows/label-not-gittensor.yml
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
name: Label non-Gittensor PRs
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types:
|
||||
- opened
|
||||
- reopened
|
||||
|
||||
permissions:
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
label-pr:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Add not-gittensor label for matched authors
|
||||
uses: actions/github-script@v7
|
||||
env:
|
||||
GITTENSOR_USERS: ${{ vars.GITTENSOR_USERS || '[]' }}
|
||||
GITTENSOR_EXCEPTIONS: ${{ vars.GITTENSOR_EXCEPTIONS || '[]' }}
|
||||
TARGET_LABEL: not-gittensor
|
||||
with:
|
||||
script: |
|
||||
const parseList = (raw, name) => {
|
||||
try {
|
||||
const parsed = JSON.parse(raw || '[]');
|
||||
if (!Array.isArray(parsed)) {
|
||||
core.setFailed(`${name} must be a JSON array.`);
|
||||
return [];
|
||||
}
|
||||
return parsed.map((value) => String(value).toLowerCase());
|
||||
} catch (error) {
|
||||
core.setFailed(`Failed to parse ${name}: ${error.message}`);
|
||||
return [];
|
||||
}
|
||||
};
|
||||
|
||||
const author = context.payload.pull_request.user.login.toLowerCase();
|
||||
const users = new Set(parseList(process.env.GITTENSOR_USERS, 'GITTENSOR_USERS'));
|
||||
const exceptions = new Set(parseList(process.env.GITTENSOR_EXCEPTIONS, 'GITTENSOR_EXCEPTIONS'));
|
||||
|
||||
if (!users.has(author) || exceptions.has(author)) {
|
||||
core.info(`No label needed for @${author}.`);
|
||||
return;
|
||||
}
|
||||
|
||||
const existingLabels = context.payload.pull_request.labels.map((label) => label.name);
|
||||
if (existingLabels.includes(process.env.TARGET_LABEL)) {
|
||||
core.info(`Label ${process.env.TARGET_LABEL} already present.`);
|
||||
return;
|
||||
}
|
||||
|
||||
await github.rest.issues.addLabels({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: context.payload.pull_request.number,
|
||||
labels: [process.env.TARGET_LABEL],
|
||||
});
|
||||
|
||||
core.info(`Added ${process.env.TARGET_LABEL} to PR #${context.payload.pull_request.number}.`);
|
||||
Reference in New Issue
Block a user