# see https://docs.github.com/en/actions/managing-issues-and-pull-requests/closing-inactive-issues
# see https://github.com/actions/stale

# Automatically closing issues is far from perfect, but then we only
# have limited resources and this approach favors issues that people
# actually care about.
#
# also see:
#   "Should I Stale or Should I Close? An Analysis of a Bot that Closes
#    Abandoned Issues and Pull Request".
#   https://igorwiese.com/images/papers/Paper_BotSE_19.pdf

name: 'GitHub - Close inactive issues'
on:
  schedule:
    - cron: "30 6 * * 4"
  workflow_dispatch:
jobs:
  close-issues:
    name: 'Close inactive issues'
    runs-on: ubuntu-latest
    permissions:
      issues: write
      pull-requests: write
    steps:
      - uses: actions/stale@v7
        with:
          operations-per-run: 300
          exempt-all-milestones: true
          exempt-issue-labels: 'blocker,enhancement,regression'
          days-before-stale: 60
          days-before-close: 30
          stale-issue-message: 'This issue is stale because it has been open 60 days with no activity. Please remove the stale label or add a comment or this issue will be closed in 30 days.'
          stale-pr-message:       'This PR is stale because it has been open 60 days with no activity. Please remove the stale label or add a comment or this PR will be closed in 30 days.'
          close-issue-message: 'This issue was closed because it has been stalled for 30 days with no activity. Please feel free to reopen.'
          close-pr-message:       'This PR was closed because it has been stalled for 30 days with no activity. Please feel free to reopen.'
          repo-token: ${{ secrets.GITHUB_TOKEN }}
