2024-05-25 21:50:25 +08:00
|
|
|
|
name: issue_lint
|
|
|
|
|
|
|
|
|
|
on:
|
|
|
|
|
issues:
|
|
|
|
|
types: [opened]
|
|
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
|
issue_lint:
|
|
|
|
|
runs-on: ubuntu-22.04
|
|
|
|
|
|
|
|
|
|
steps:
|
|
|
|
|
- uses: actions/checkout@v3
|
|
|
|
|
|
|
|
|
|
- uses: actions/github-script@v6
|
|
|
|
|
with:
|
|
|
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
|
script: |
|
|
|
|
|
const fs = require('fs').promises;
|
|
|
|
|
|
|
|
|
|
const getTitles = (str) => (
|
|
|
|
|
[...str.matchAll(/^## (.*)/gm)].map((m) => m[0])
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const titles = getTitles(context.payload.issue.body);
|
|
|
|
|
|
|
|
|
|
for (let file of await fs.readdir('.github/ISSUE_TEMPLATE')) {
|
|
|
|
|
if (!file.endsWith('.md')) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const template = await fs.readFile(`.github/ISSUE_TEMPLATE/${file}`, 'utf-8');
|
|
|
|
|
const templateTitles = getTitles(template);
|
|
|
|
|
|
|
|
|
|
if (templateTitles.every((title) => titles.includes(title))) {
|
|
|
|
|
process.exit(0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await github.rest.issues.createComment({
|
|
|
|
|
owner: context.issue.owner,
|
|
|
|
|
repo: context.issue.repo,
|
|
|
|
|
issue_number: context.issue.number,
|
|
|
|
|
body: '此issue由于不符合模板规范已经自动关闭,请重新按照模板规范确保包含模板中所有章节标题再提交\n',
|
|
|
|
|
});
|
2024-07-23 11:24:09 +08:00
|
|
|
|
|
|
|
|
|
await github.rest.issues.addLabels({
|
|
|
|
|
owner: context.issue.owner,
|
|
|
|
|
repo: context.issue.repo,
|
|
|
|
|
issue_number: context.issue.number,
|
|
|
|
|
labels: ['自动关闭']
|
|
|
|
|
});
|
2024-05-25 21:50:25 +08:00
|
|
|
|
|
|
|
|
|
await github.rest.issues.update({
|
|
|
|
|
owner: context.issue.owner,
|
|
|
|
|
repo: context.issue.repo,
|
|
|
|
|
issue_number: context.issue.number,
|
|
|
|
|
state: 'closed',
|
|
|
|
|
});
|