Files
searxng/.github/workflows/ai-policy-checkbox.yml
2026-07-26 16:51:14 +00:00

91 lines
3.6 KiB
YAML

---
name: AI Policy
# yamllint disable-line rule:truthy
on:
issues:
types: [opened]
pull_request_target:
types: [opened]
concurrency:
group: ${{ github.workflow }}-${{ github.event.issue.number || github.event.pull_request.number }}
cancel-in-progress: true
permissions:
contents: read
jobs:
issue:
name: Check issue
if: >-
github.event_name == 'issues' &&
github.event.sender.type != 'Bot' &&
contains(fromJSON('["NONE","FIRST_TIMER","FIRST_TIME_CONTRIBUTOR"]'),
github.event.issue.author_association)
runs-on: ubuntu-26.04
permissions:
issues: write
steps:
- uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
const body = context.payload.issue.body || '';
const lines = body.split(/\r?\n/).map((l) => l.trim().replace('[X]', '[x]'));
const ref = '[AI Policy]: https://github.com/searxng/searxng/blob/master/AI_POLICY.rst';
const box = '- [x] I read the [AI Policy] and hereby confirm that this issue'
+ ' conforms with the policy.';
if (lines.includes(ref) && lines.includes(box)) return;
const n = context.payload.issue.number;
const msg = 'This issue was closed because the AI Policy box has not been ticked.\n\n'
+ 'Please open a new issue with the checkbox ticked.';
await github.rest.issues.createComment({
owner: context.repo.owner, repo: context.repo.repo, issue_number: n,
body: msg,
});
await github.rest.issues.addLabels({
owner: context.repo.owner, repo: context.repo.repo, issue_number: n,
labels: ['invalid:slop'],
});
await github.rest.issues.update({
owner: context.repo.owner, repo: context.repo.repo, issue_number: n,
state: 'closed', state_reason: 'not_planned',
});
pull_request:
name: Check pull request
if: >-
github.event_name == 'pull_request_target' &&
github.event.sender.type != 'Bot' &&
contains(fromJSON('["NONE","FIRST_TIMER","FIRST_TIME_CONTRIBUTOR"]'),
github.event.pull_request.author_association)
runs-on: ubuntu-26.04
permissions:
pull-requests: write
steps:
- uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
const body = context.payload.pull_request.body || '';
const lines = body.split(/\r?\n/).map((l) => l.trim().replace('[X]', '[x]'));
const ref = '[AI Policy]: https://github.com/searxng/searxng/blob/master/AI_POLICY.rst';
const box = '- [x] **I hereby confirm that this PR conforms with the [AI Policy].**';
if (lines.includes(ref) && lines.includes(box)) return;
const n = context.payload.pull_request.number;
const msg = 'This pull request was closed because the AI Policy box has not been'
+ ' ticked.\n\nPlease open a new pull request with the checkbox ticked.';
await github.rest.issues.createComment({
owner: context.repo.owner, repo: context.repo.repo, issue_number: n,
body: msg,
});
await github.rest.issues.addLabels({
owner: context.repo.owner, repo: context.repo.repo, issue_number: n,
labels: ['invalid:slop'],
});
await github.rest.issues.update({
owner: context.repo.owner, repo: context.repo.repo, issue_number: n,
state: 'closed', state_reason: 'not_planned',
});