diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml deleted file mode 100644 index 93cf10a9..00000000 --- a/.github/workflows/stale.yml +++ /dev/null @@ -1,113 +0,0 @@ -name: stale-bot - -on: - schedule: - # run every day at midnight - - cron: "0 0 * * *" - issue_comment: - types: ["created"] - -env: - # Name of the label that makes issues subject to the stale bot. - STALE_ENABLE_LABEL: "status: waiting for information" - # Name of the label used to mark issues as stale. - STALE_LABEL: "status: stale" - -jobs: - stale-bot: - runs-on: ubuntu-latest - steps: - - name: Mark stale - if: github.event_name == 'schedule' - uses: actions/github-script@v3 - with: - github-token: ${{github.token}} - script: | - // Get a list of all open issues labeled as waiting for feedback - const opts = github.issues.listForRepo.endpoint.merge({ - ...context.repo, - state: 'open', - labels: ['${{ env.STALE_ENABLE_LABEL }}'], - }); - const issues = await github.paginate(opts); - - // Set this value to whatever makes sense for the repo. - let elapsedDays = 30 - - let elapsed = elapsedDays * 24 * 60 * 60 * 1000; - let now = new Date().getTime(); - for (const issue of issues) { - // If an issue was active in the past 15 days, leave it alone. - if (now - new Date(issue.updated_at).getTime() < elapsed) { - continue; - } - - // If we're here, we've been waiting for feedback for more than - // 15 days, mark as stale. - github.issues.addLabels({ - ...context.repo, - issue_number: issue.number, - labels: ['${{ env.STALE_LABEL }}'] - }); - } - - - name: Mark active - if: github.event_name == 'issue_comment' - uses: actions/github-script@v3 - with: - github-token: ${{github.token}} - script: | - // Every time a comment is added to an issue, close it if it contains - // the stale label. - - // Load issue's labels. - const opts = github.issues.listLabelsOnIssue.endpoint.merge({ - ...context.repo, - issue_number: context.issue.number - }); - const labels = await github.paginate(opts); - - // Search for stale label. - for (const label of labels) { - if (label.name === '${{ env.STALE_LABEL }}') { - await github.issues.removeLabel({ - ...context.repo, - issue_number: context.issue.number, - name: '${{ env.STALE_LABEL }}' - }) - return; - } - } - - - name: Close stale - if: github.event_name == 'schedule' - uses: actions/github-script@v3 - with: - github-token: ${{github.token}} - script: | - // Load all the stale issues - const opts = github.issues.listForRepo.endpoint.merge({ - ...context.repo, - state: 'open', - labels: ['${{ env.STALE_LABEL }}'], - }); - const issues = await github.paginate(opts); - - // Set this value to whatever makes sense for the repo. - let elapsedDays = 15; - - let elapsed = elapsedDays * 24 * 60 * 60 * 1000; - let now = new Date().getTime(); - for (const issue of issues) { - // If an issue was stale for less than elapsed time, leave it alone. - if (now - new Date(issue.updated_at).getTime() < elapsed) { - continue; - } - - // Close the stale issue. - await github.issues.update({ - ...context.repo, - issue_number: issue.number, - state: 'closed' - }); - }