mirror of
https://github.com/we-promise/sure.git
synced 2026-05-25 21:44:56 +00:00
61 lines
2.1 KiB
YAML
61 lines
2.1 KiB
YAML
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}.`);
|