name: issues on: issues: types: [opened] jobs: issues: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - run: npm install mdjson - uses: actions/github-script@v6 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | const fs = require('fs').promises; const mdjson = require('mdjson'); const titles = Object.keys(mdjson(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 = Object.keys(mdjson(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: 'This issue is being automatically closed because it does not follow the issue template.\n' + 'Please reopen the issue and make sure to include all sections of the template.', }); await github.rest.issues.update({ owner: context.issue.owner, repo: context.issue.repo, issue_number: context.issue.number, state: 'closed', });